기본 변수 $_ 에서는 Perl

모든 변수에 Perl 프로그래밍 언어를 포함하는 단일 값 시작과 함께 달러 $. 예를 들어,당신은 변수를 만들 수 있습 $str$var.

Perl 에서 특별한 변수 $_. 많은 장소에서 프로그래밍 언어 Perl 는 경우 명시적으로 지정하지 않은 변수의 변수에 사용되는 것 $_. 거기 있는 핵심 단어에서 값을 읽 이 변수,그리고 그런 는 설정 값에 이 변수입니다. 하지만에 이 변수 값을 저장합니다.

는 키워드로 읽은 값에서 $_

예를 들어,키워드로 읽은 값의 기본 변수 지도 print. 을 지정하는 경우 print 지 않고 인수,스크린 인쇄의 내용을 변 $_.

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

$_ = 'Hello';

print;

첫째,우리는 변수에 저장 $_'Hello'(노트 우리는 사용하지 않은 핵심 단어 my).

그리고 우리는 사용 print,그러나지 않게 보내는 모든 인수입니다. 에서 이용 print 의 내용을 표시하는 변수 $_. print; 과 같 print $_;

결과—프로그램에 텍스트가 표시됩니다 Hello.

키워드 print, say 때 사용되지 않고 인수 사용 기본 변수 $_. 그것은 흥미로운 키워드 warn 을 사용할 때 인수 없는 변수 $_ 사용하지 않습니다.

또 다른 예를 사용할 때 기본변수를 정기적인 표현입니다. 를 적용하기 위해서는 정규 표현식을 변수를 작성해야 합 $str =~ /.../. 그리고 당신은 그냥 작성 /.../ 일,그것과 동일 $_ =~ /.../.

여기에 작은 코드를 들어:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

$_ = 'Hello';

if (/ll/) {
    print 'yes';
} else {
    print 'no';
}

상태 if (/ll/) { 는지 여부를 확인 변수 $_ 두 글자 l 합니다. 기 때문에 라인에서'Hello' 거기에는 이 두 글자 다음의 코드를 실행 print 'yes';는 텍스트가 표시됩 yes 습니다.

는 키워드를 넣어 가치에 $_

가장 자주 사용되는 핵심어는 변경 변수 값을 $_foreach. 여기에는 예제 코드:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use feature qw(say);

foreach ('one', 'two', 'three') {
    say;
}

여기에 몸의 루프 foreach 은 3 번을 수행에 대한 각각의 항목 목록에서 'one', 'two', 'three'. 기 전에 각 실행을 반복의 몸에서 변 $_ 배치되 다음 요소로서는 목록에 있습니다. 그렇게 기록할 수 있습니다 이 주기를 가진 명확한 표시는 것의 가치에 배치되어야한 변수 $_: foreach $_ ('one', 'two', 'three') {

그리고 우리는 사용 say; 과 동일 say $_;.

다른 방법을 배치하는 값으로 변 $_ 사용하는 것입 while (<>) {. 는 코드는 다음과 같습니다:

#!/usr/bin/perl

while (<>) {
    print " * $_";
}

이 코드를 읽고 표준 입력과 출력 각 라인으로 인하 목록입니다. 의 예는 다음과 같은 방법 이 코드로 작업하려면 콘솔에서:

$ perl -e 'print "1\n2\n3\n"' | perl script.pl
 * 1
 * 2
 * 3

첫째,우리가 사용되는 펄 odnotrahniki 표시하는 세 가지 라인,각 행은 그림입니다. 그리고 우리는 리디렉션된 이 출력하는 입력 스크립트의는 우리가 그냥 밝혔다. 몸의 루프 while (<>) { 을 수행에 대한 각 라인의 입력,그리고 이 문자열에 위치한 변수 $_.

# 예

여기에의 다른 보드에서 적극적으로 사용되는 기본 변수 $_:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @arr = map { ucfirst } grep { /^.{3}\z/ } ('one', 'two', 'three');

print Dumper \@arr;

만약 당신이 이 프로그램을 실행,그것이 화면에 나타납니다:

$VAR1 = [
          'One',
          'Two'
        ];

그래서,여기에 무슨 일이 일어나. 식있는 할당을 의 값을 배열 @arr 필요하신 오른쪽에서 왼쪽으로 읽.

  • 첫째,우리는 식별 목록을 세 가지의 문자열 ('one', 'two', 'three')
  • 그런 다음,우리가 사용되는 키워드 grep 을 이 목록입니다. grep 각 요소에서 원래의 목록을 변수 $_ 인과 기록에서 괄. 는 경우 이 테스트 true 를 반환한 다음, grep 의 값을 반환합니다. 이 예제에서 중괄호를 포함한 일반현에 적용되는 기본 변수입니다. 이 정규표현식을 만족시킬 것이 문자열에만으로 구성되는 정확하게 세 가지 캐릭터입니다. 의 결과 grep 의 목록은 두 문자열 ('one', 'two').
  • 목록 두 요소의 가로 map. 이 키워드는 각 목록 항목에 기본변수와 실행하고 작성된 코드에서 괄. 결과를 반환하는 코드 목록 항목을 반환하는 map. 이 예제에서는 우리가 사용하는 기능 lcfirst는 문자열을 반환하는 그의 첫 번째 문자가 대문자로 표시됩니다. 는 경우 이 함수 인수를 지정하지 않을,그것은 작품과 함께 기본 변수입니다.

공식적인 문서

여기에 조각의 출력 perldoc perlvar 프로 변 $_:

    $_      The default input and pattern-searching space. The following
            pairs are equivalent:

                while (<>) {...}    # equivalent only in while!
                while (defined($_ = <>)) {...}

                /^Subject:/
                $_ =~ /^Subject:/

                tr/a-z/A-Z/
                $_ =~ tr/a-z/A-Z/

                chomp
                chomp($_)

            Here are the places where Perl will assume $_ even if you don't
            use it:

            *  The following functions use $_ as a default argument:

               abs, alarm, chomp, chop, chr, chroot, cos, defined, eval,
               evalbytes, exp, fc, glob, hex, int, lc, lcfirst, length, log,
               lstat, mkdir, oct, ord, pos, print, printf, quotemeta,
               readlink, readpipe, ref, require, reverse (in scalar context
               only), rmdir, say, sin, split (for its second argument),
               sqrt, stat, study, uc, ucfirst, unlink, unpack.

            *  All file tests ("-f", "-d") except for "-t", which defaults
               to STDIN. See "-X" in perlfunc

            *  The pattern matching operations "m//", "s///" and "tr///"
               (aka "y///") when used without an "=~" operator.

            *  The default iterator variable in a "foreach" loop if no other
               variable is supplied.

            *  The implicit iterator variable in the "grep()" and "map()"
               functions.

            *  The implicit variable of "given()".

            *  The default place to put the next value or input record when
               a "<FH>", "readline", "readdir" or "each" operation's result
               is tested by itself as the sole criterion of a "while" test.
               Outside a "while" test, this will not happen.

            $_ is a global variable.

            However, between perl v5.10.0 and v5.24.0, it could be used
            lexically by writing "my $_". Making $_ refer to the global $_
            in the same scope was then possible with "our $_". This
            experimental feature was removed and is now a fatal error, but
            you may encounter it in older code.

            Mnemonic: underline is understood in certain operations.

관련 주제

다른 기사