Ты не совсем нам все показываешь. Чтобы получить заявленный результат, мне нужно было создать переменную $def
, инициализированную, как показано ниже. Но когда я это делаю, я получаю ожидаемый вами результат, а не тот, который вы показываете.
$ cat xx.pl
use strict;
use warnings;
my $def = '$def';
my $element = "abc#$def";
$element =~ s/#/\\#/g;
print "$element\n";
my @arr;
push(@arr, $element);
foreach my $val (@arr)
{
print $val;
print "\n";
}
$ perl xx.pl
abc\#$def
abc\#$def
$
Это было протестировано с Perl 5.14.1 на MacOS X 10.6.8, но я не думаю, что поведение будет отличаться с любой другой версией Perl 5.
Учитывая это, вы можете обновить свой вопрос, чтобы показать скрипт, похожий на мой (в частности, с use strict;
и use warnings;
), но который дает результат, который вы показываете?