Как развернуть переменные в обработчиках 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

Я все еще ищу более чистое решение все же.

Ответы на вопрос(2)

Ваш ответ на вопрос