Когда я запускаю этот код, я получаю "нет":
my $memory_file;
my $fh;
open ($fh, '>', \$memory_file);
print $fh "abc";
if( $memory_file =~ m/^.*$/ )
{ print "yes\n" }
else
{ print "no\n" }
Если я распечатаю $memory_file
, содержимое действительно "abc"
.
Если изменить шаблон на .*
(нет ^
или $
), он будет работать как ожидалось.
Если я поместил строку $memory_file = "abc"
перед совпадением, я получаю "да" распечатан (как первоначально ожидалось).
Что здесь происходит?
(Это perl 5.14.1)
Обновление: Еще некоторое обсуждение PerlMonks. Это похоже на ошибку, я запишу ее.
Обновление 2: Прекрасные разработчики Perl исправили эту ошибку: https://rt.perl.org/rt3//Public/Bug/Display.html?id=108398