我有以下 Perl 脚本。我正在尝试使用 ActivePerl 在 Windows 7 中运行它:
#!c:\Perl64\bin\perl.exe -w
use strict;
my $mp3splt_exe = 'c:\Program Files (x86)\mp3splt\mp3splt.exe';
my $mp3splt_args = '-o "@n @f" -g "r%[@o @N]" -f -t 6.0';
print @ARGV;
my $filename = $ARGV[0];
print "$mp3splt_exe $mp3splt_args $filename\n";
(如您所见,我正在尝试为 mp3splt 创建一个包装器 :-))
当我像这样运行它时:
C:\Program Files (x86)\mp3splt>run_mp3splt.pl a
我明白了:
Use of uninitialized value $filename in concatenation (.) or string at C:\Program Files (x86)\mp3splt\run_mp3splt.pl line 12.
c:\Program Files (x86)\mp3splt\mp3splt.exe -o "@n @f" -g "r%[@o @N]" -f -t 6.0
所以,首先,当我
print @ARGV
,什么都不会打印,其次,当我分配 $filename = $ARGV[0]
时, $filename
是 undef
,所以我收到警告。所以……我做错了什么?为什么不将命令行参数传递给脚本?
最佳答案
我很确定 Windows 7 不理解 shebang 行。如果你用 perl run_mp3splt.pl a
运行它会发生什么?
关于perl - @ARGV 在 Windows 7 中使用 ActivePerl 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4234581/