2013-02-01 6 views
0

스크립트에 대한 명령 줄 입력에 perl -s 옵션을 자주 사용합니다. 이제, 이들 중 일부를 PAR::packer을 사용하여 exe 파일로 변환하려고합니다. 이 스타일의 명령 줄 입력을 exe 파일과 함께 사용할 수있는 방법이 있습니까? 이 스크립트에서 변수 $namePerl 사용 PAR : Packer exe -s 명령 줄 입력

perl my_script.pl -name="Robin" -date=20130201 

$date는 지정된 값으로 초기화 될 것이다 :

예를 들어, I는 펄 스크립트를 실행합니다. my_script (PAR::packer 사용)에서 작성한 exe 파일로이 동작을 에뮬레이트 할 수 있습니까?

BEGIN{ 
    my %args = map {s/^-{0,2}//; split /[=:]/} @ARGV; 
    no strict 'refs'; 
    $$_ = $args{$_} for keys %args; 
    @ARGV =(); 
} 

을 아니면 스크립트의 시작 부분에서 "사용"패키지에 넣어 :

+5

나는 잘 모르지만 대신'Getopt :: Long'으로 전환하는 것이 좋습니다. – melpomene

+1

두 번째는 Getopt :: Long 주석입니다. '-s' 플래그는 기껏해야 초보적입니다. –

+0

동의 - Getopt를 사용하도록 전환했으며 모든 것이 잘 작동합니다. 모두에게 감사드립니다. – ninjaman

답변

0

당신은 스크립트의 시작 부분에 그런 일을 추가 할 수 있습니다.

EDIT : changed local => my, 매핑을 단순화하고 엄격한 'refs'를 추가하지 않았습니다.

+0

그렇게하고 싶지는 않습니다. ① '내 % args = ...'를하십시오. '지방'이 이상하게 보인다. ②'map + (do {...}), ...'⇔'do do {...}, ...'⇔'map {...} ...'! ③ 이것은 '엄격한'심판이 필요 없다. 이것은 악한 것이지만'perl -Mstrict -E '@ main :: {qw/x y z /} = map \ $ _, (1..3); 우리의 ($ x, $ y, $ z) '에 대해서도 말하자면 엄격한 심판에서도 그렇습니다 :) 또한, 이것이 정규 참조로 오인 될 가능성은 없습니다 ... – amon

+0

그 점을 지적 해 주셔서 감사합니다! – xlat