Как развернуть переменные в обработчиках Perl readpipe?
Кажется, что переменные в обратных галочках не раскрываются при передаче в функцию readpipe. Если я переопределю функцию readpipe, как мне расширить переменные?
BEGIN {
*CORE::GLOBAL::readpipe = sub {print "Run:@_\n"};
}
`ls /root`;
my $dir = "/var";
`ls $dir`;
Запуск этого дает:
Run:ls /root
Run:ls $dir
Я пытаюсь смоделировать внешние вызовы для тестового кода, который я пишу. Если где-то есть модуль CPAN, который может помочь позаботиться обо всем этом, это тоже поможет.
Update:
Я решил использовать действительно уродливый способ решения своей проблемы. Оказывается, используяreadpipe()
вместо галочек расширяет переменные правильно. Я использую автоматический очиститель скриптов перед запуском моих тестов, который преобразует все обратные ссылки вreadpipe()
перед запуском тестов.
например, работает:
$ cat t.pl
BEGIN {
*CORE::GLOBAL::readpipe = sub {print "Run:@_\n"};
}
`ls /root`;
my $dir = "/var";
`ls $dir`;
readpipe("ls $dir");
дает:
$ perl t.pl
Run:ls /root
Run:ls $dir
Run:ls /var
Я все еще ищу более чистое решение все же.