다음 Perl 스크립트가 있습니다. 내가 ActivePerl의를 사용하여 Windows 7에서 실행하려고 :@ARGV는 Windows 7에서 ActivePerl을 사용하여 비어 있습니다.
#!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
내가 얻을이 :
0 모든 1,232,145,316, Iprint @ARGV
이, 아무것도 인쇄되지 도착 우선 그래서
, 그리고 두 번째, 내가 $filename = $ARGV[0]
를 할당 $filename
는 undef
, 그래서 경고를 얻을.
그래서 ... 내가 뭘 잘못하고 있니? 명령 줄 매개 변수가 스크립트에 전달되지 않는 이유는 무엇입니까?
내 Win7 상자에서 스 니펫을 실행 했으므로 실제로 이상합니다. 실제로 작동했습니다. 어떤 버전의 펄을 사용하고 있으며 Windows 7에 맞는 버전을 설치 했습니까? 또한이 perl -e "print @ARGV"aaaa를 실행 해보십시오. 출력을 얻었는지 확인하십시오. 그렇지 않다면 확실히 펄 설치에 문제가 있습니다. 그렇게하면 스크립트에 충돌이 생기거나 선언 된 변수의 범위를 확인하는 등의 문제가 발생할 수 있습니다. –