Почему 'скажем "% hash" не работает так же, как и для скаляров и массивов? - PullRequest
2 голосов
/ 13 января 2011

Почему ', скажем, "% hash" ' не работает так же, как и для скаляров и массивов?

#!/usr/bin/perl
use strict;
use warnings;
use Modern::Perl;
use Test::More;

my $s = "Hello, World!";
say $s;
say "$s";

my @a = ("Hello", "World!");
say @a;
say "@a";

my %h = ("Hello", "World!");
say %h;
say "%h";

D:\TEST\perl>perl 1.pl
Hello, World!
Hello, World!
HelloWorld!
Hello World!
HelloWorld!
%h

Ответы [ 2 ]

7 голосов
/ 13 января 2011

Потому что это испортило бы синтаксис printf?

%d = ('key' => 'value');
printf "The answer is %d\n", 4;    # is %d a format symbol or the hash table?
6 голосов
/ 13 января 2011

Короткий ответ прост: «потому что так оно и есть».Sigil% не запускает интерполяцию в строках в двойных кавычках.

У меня нет определенной рационализации, но это может быть сочетание следующего:

  • конфликт с printfв стиле
  • нет единого способа сделать это.Вы бы предпочли разделить пробел?Только ключи?Другой разделитель между парами и ключом и его значением?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...