Несмотря на то, что он заключен в двойные кавычки и %s
должен быть интерполирован на несуществующий хеш, это действительный Perl и выдает "confusing = true"
.
#!/usr/bin/perl -w
use strict;
my $what = "confusing = %s";
printf $what, "true";
Однако это не действует (как и ожидалось), потому что $ s не существует:
my $what = "confusing = $s";
Совсем связанно: http://stackoverflow.com/questions/6731291/why-doesnt-perl-support-interpolation-of-hashes-in-double-quotes – pilcrow
Спасибо pilcrow. Я отвечу цитату Натана Торкингтона в качестве ответа. «Большая проблема в том, что% сильно используется в строках с двойными кавычками с printf». –
@pilcrow Не имеет отношения; обратите внимание, что это вызов 'printf', который обрабатывает'% s' в своей строке форматирования определенным определенным образом, а не вызовом 'print', в котором'% s' является сомнительным, и применимо к Torkington's dictum. –