У меня есть следующий скрипт Perl. Я пытаюсь запустить его в Windows 7 с помощью ActivePerl:@ARGV пуст, используя 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
я получаю это:
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
, поэтому я получаю предупреждение.
Итак ... что я делаю неправильно? Почему параметр командной строки не передается скрипту?
Право это действительно странно, потому что я просто побежал сниппет на мой ящик Win7 и он действительно работал. Какую версию perl вы используете, и установили ли вы подходящую для Windows 7? Также попробуйте запустить этот perl -e «print @ARGV» aaaa И посмотрите, получаете ли вы какой-либо результат, если вы этого не сделаете, то определенно что-то не так с вашей установкой perl. Если вы это сделаете, у вас, вероятно, есть некоторые конфликты в скрипте, проверьте объем объявленных переменных и т. Д. –