2010-02-11 3 views
1

test.pl 스크립트는 아래와 같습니다.명령 줄에서 Perl 서브 루틴 매개 변수에 값을 전달하려면 어떻게해야합니까?

#!C:\Perl\bin\perl.exe 
use strict; 
use warnings; 


sub printargs 
{ 
    print "@_\n"; 
} 

&printargs("hello", "world"); # Example prints "hello world" 

printargs("hello", "world");print($a, $b);으로 바꾼 경우. 내가 명령 줄에서 펄 test.pl 안녕하세요 세계을 실행할 때, $에 감사를 A, $의 B를 '안녕하세요', '세계'를 전달하는 방법을

.

+3

'&'를'& printargs (...) '에서 생략하는 것이 현명합니다. 당신은 그것을 필요로하지 않고'&'로 서브 콜링의 접두사를 붙이면 기대하지 않았던 부작용을 가질 수있다. –

답변

3

$ ARGV [0]은 첫 번째 인수 $ ARGV [1] 번째 인수 포함 등을 포함

ARGV는 @ARGV 배열의 마지막 요소의 첨자 때문에 개수 인 $ # 명령 줄의 인수는 $ # ARGV + 1입니다.

+3

@ARGV를 사용하여 요소 수를 얻을 수도 있습니다. 예 : if (@ARGV <2) {die "Usage :". $ 0. " \ n"; } – user198470

1

Perl에서 "명령 줄 매개 변수"에 액세스하려고합니다.

기본적으로 Perl은 실제 스크립트 이름 다음에 전달하는 문자열을 @ARGV라는 배열로 간주합니다.

http://devdaily.com/perl/edu/qanda/plqa00001.shtml 그냥 이상 "펄 명령 줄 매개 변수를"구글 :

여기에 간단한 튜토리얼입니다.

3

명령 줄 인수는 @ARGV 배열에 있습니다. 그냥 기능 되었 :

&print(@ARGV); 

아마 최선을

print 같은 이름을 방지하기 위해 - 같은 이름의 내장 기능과 혼동 수 있습니다.

+1

감사합니다. 수정 된 * 인쇄 * to * printargs * –

0

기본적으로 다른 사람들이 말했듯이 @ARGV 목록이 귀하의 질문에 대한 답변입니다.

은 이제 더 나아가 프로그램에 대한 명령 줄 옵션을 정의하려는 경우, 당신은 또한 약 @ARGVperldoc perlvar에서 읽습니까 getargs.

4

에서 100g을이 있어야합니다.

0

요청시 $ a 및 $ b에 데이터를 전달하는 동안 명령 줄 인수에서 "hello world"를 인쇄합니다.

#!/usr/bin/perl -w 

use warnings; 
use strict; 

sub printargs($$) 
{ 
    print $_[0] . " " . $_[1] . "\n"; 
} 

my($a,$b) = ($ARGV[0],$ARGV[1]); 
printargs($a,$b);