Perl 에서 Getopt::Long 모듈 을 사용 하여 사용자 명령 행 인 자 를 받 습 니 다.

4743 단어 PerlGetopt
우 리 는 Liux 에서 항상 하나의 프로그램 에 파 라 메 터 를 추가 해 야 합 니 다.이제 perl 의 제어 매개 변수 에 관 한 모듈 Getopt:Long 을 알 아 보 세 요.@ARGV 를 직접 사용 하 는 배열 보다 훨씬 강 합 니 다.Linux 에 있 는 매개 변 수 는 두 가지 형식 이 있다 는 것 을 알 고 싶 습 니 다.
•긴 매개 변수  Chelp•짧 은 매개 변수   -h 즉-C 와 의 구분.C 는 완전한 매개 변 수 를 표시 합 니 다.-매개 변 수 를 간소화 하 는 것 을 의미 합 니 다.Perl 의 이 모듈 에서 도 이 두 가지 방법 을 지원 합 니 다.이것 은 소개 할 두 가지 모듈 이 있 습 니 다.하 나 는 Getopt:Long 이 고 하 나 는 Getopt::Std 입 니 다.다음은 Getopt:Long 만 소개 합 니 다.이 모듈 은 더욱 강력 하기 때 문 입 니 다.
Getopt::Long 모듈 은 Perl 명령 행 에서 받 아들 이 는 매개 변 수 를 초기 화하 고 명령 행 매개 변수 에 대한 분석 을 간소화 합 니 다.다음은 프로그램의 예 를 보 겠 습 니 다.

#!/usr/bin/perl
use strict;
use Getopt::Long;
use Smart::Comments;

my @libs    = (); 
my %flags   = (); 
my ( $verbose, $all, $more, $diam, $debug, $test, $step);

GetOptions(
        'verbose+'  => \$verbose,
        'more!'     => \$more,
        'debug:i'   => \$debug,
        'lib=s'     => \@libs,
        'flag=s'    => \%flags,
        'test|t'    => \$test,
        'all|everything|universe' => $all,
);

### $verbose
### $more
### $debug
### $test
### @libs;
### %flags
이것 이 바로 사용 하 는 방법 입 니 다.다음은 상세 한 설명 입 니 다.GetOptions 의=>앞부분 을 주의 깊 게 보 세 요.다음은 상세 한 설명 입 니 다.
•‘verbose+'  +가 있 는 옵션 은 변 수 를 받 지 않 습 니 다.그 다음 에 내용 을 추가 할 필요 가 없습니다.직접 사용 하면 됩 니 다.나타 날 때마다 변 수 를 한 번 추가 합 니 다.즉,명령 행 을 말 할 때 매개 변수 에서-verbose-verbose 가 두 번 나타 날 때 verbose 의 값 은 2 가 됩 니 다.•'more!'        받 아 라!의 옵션 은 변 수 를 받 지 않 습 니 다(즉,뒤에 인 자 를 추가 하지 않 아 도 됩 니 다 Cmore 를 사용 하면 됩 니 다).명령 줄 에 이 인자 가 나타 나 면 기본 값 은 1 입 니 다.하나의 기능 을 열 고 끄 는 것 을 설정 하 는 데 사 용 됩 니 다>.인자 앞 에 no 를 추가 하여 마이너스 로 만 들 수 있 습 니 다.예 를 들 어-nomore.•'flag=s'        연결=문자열 은 문자열(s),정수(i)또는 부동 소수점(f)등의 변 수 를 연결 해 야 합 니 다.•'debug:i'      연결:이 옵션 은 0 또는 빈 문자열 의 선택 변 수 를 받 아들 입 니 다•'test|t'          연결|옵션 은 Ctest 에-t.•lib=s 로 간략하게 쓸 수 있 음 을 표시 합 니 다.     => @libs    연 결 된 변수 가 배열 이 라면 이 곳 의@libs 와 같이 옵션 이 여러 번 나타 날 수 있 습 니 다.값 은 배열 로 밀 릴 수 있 습 니 다.•'flag=s'    => %flags  연 결 된 변수 가 해시 라면 키=값(key=value)이 맞 고 해시 에 삽입 되 어야 합 니 다.
비고:     매개 변수 이름 과 일치 할 때 GetOptions 는 결 성 된 설정 에서 대소 문 자 를 무시 합 니 다.기본 매개 변 수 는 유일한 최 단 문자열(이니셜)(예 를 들 어-m 는-more 를 대표 합 니 다.같은 이니셜 일 때 두 번 째 자모 로 구 분 됩 니 다)
Getopt 모듈 의 프로그램 사용 방법:
위의 예 에 따 르 면,예 를 들 어 우 리 는 test.pl 라 는 프로그램 을 썼 습 니 다.우 리 는 명령 행 에 다음 과 같은 매개 변 수 를 추가 해 야 합 니 다.
$ ./test.pl  --verbose --verbose -v --more \       --lib='/lib' -l '/lib64' --f a=1 --flag b=2  --debug 2 -t fukai 
조금 길 어 요.위 에 있 는 것 을 보면 뜻 을 알 수 있어 요.여기 서 스마트:Comment 모듈 을 사 용 했 어 요.그래서 맨 아래 에 있 는\##\##  이 변수 자체 의 내용 을 출력 합 니 다.이것 도 매우 강력 한 모듈 입 니 다.이 매개 변 수 를 입력 하면 어떤 내용 을 출력 하 는 지 살 펴 보 겠 습 니 다.

### $verbose: 3
### $more: 1
### $debug: 2
### @libs: [
###          '/lib',
###          '/lib64'
###        ]
### %flags: {
###           a => '1',
###           b => '2'
###         }
위 에 입력 한 인 자 를 맞 춰 보 세 요.아 시 겠 죠?
Getopt 모듈 의 간단 한 요약
(1.프로그램 내부 에 값 매개 변수 가 들 어 갑 니 다※매개 변수 유형:정수,부동 소수점,문자열

GetOptions(
    'tag=s' => \$tag
);
'='은 이 매개 변 수 는 반드시 매개 변수 값 이 있어 야 한 다 는 것 을 나타 낸다.만약 에'바 꾸 면 매개 변수 가 반드시 매개 변수 값 이 있어 야 하 는 것 이 아니 라's'는 문자열 파 라 메 터 를 전달 하 는 것 을 나타 낸다.만약 에'i'표 에 정수 파 라 메 터 를 전달 하면'f'표 에 부동 소수점 을 전달 해 야 한다.
값 매개 변수 사용 방법

$ test.pl --tag=string
$ test.pl --tag string
(2.여러 값 의 인 자 를 프로그램 에 전송 해 야 합 니 다.예 를 들 어@libfiles 에 몇 개의 값 을 전송 해 야 하 는 조작 방법 입 니 다.

GetOptions ("library=s" => \@libfiles);
GetOptions ("library=s@" => \$libfiles);
매개 변 수 를@$tag 에 전달 하 는 방법
$ test.pl --library lib/stdlib --library lib/extlib 
(3.키 값 에 대한 매개 변수 전달
때때로 우 리 는 프로그램 에 키 값 을 전송 하여 처리 해 야 하기 때문에 이 기능 을 사용 해 야 한다.

GetOptions ("define=s" => \%defines);
GetOptions ("define=s%" => \$defines);
사용 방법
$ test.pl --define os=linux --define vendor=redhat 
  (4.인자 의 별명 은 약자 와 같은 인자 가 필요 할 때 아래 의 방법 을 사용 할 수 있 습 니 다.
 GetOptions ('length|height=f' => \$length); 
첫 번 째 이름 은 primary name 이 고 다른 이름 은 alias(alias 이름 이 여러 개 있 을 수 있 음)입 니 다.hash 인 자 를 사용 할 때 primary name 을 key 값 으로 사용 합 니 다.

좋은 웹페이지 즐겨찾기