Во-первых, вы можете использовать свою оболочку, чтобы получить список для вас:
perl script.pl <( cat list )
Если вы не хотите этого делать, возможно, потому что вы работаете с максимальной длиной командной строки, вы можетеперед тем, как использовать @ARGV
или ARGV
(включая <>
), используйте следующее:
@ARGV = map {
if (my $qfn = /^\@(.*)/s) {
if (!open(my $fh, '<', $qfn)) {
chomp( my @args = <$fh> );
@args
} else {
warn("Can't open $qfn: $!\n");
()
}
} else {
$_
}
} @ARGV;
Имейте в виду, что у вас будут непреднамеренные побочные эффекты, если у вас есть файл, имя которого начинается с "@».