수색…


기본 보간법

보간은 Perl 인터프리터가 특수 문자 시퀀스 (이스케이프라고도 함)에 대해 이름과 일부 기호 (직접 입력 할 수 없거나 직접 입력하기 어려운 기호)로 변수 값을 대체 함을 의미합니다. 가장 중요한 차이는 작은 따옴표와 큰 따옴표 사이에있는 것입니다. 큰 따옴표는 묶은 문자열을 보간하지만 작은 따옴표는 포함하지 않습니다.

my $name = 'Paul';
my $age = 64;
print "My name is $name.\nI am $age.\n"; # My name is Paul.
                                         # I am 64.

그러나:

print 'My name is $name.\nI am $age.\n'; # My name is $name.\nI am $age.\n

작은 따옴표 대신 q{} (구분 기호 포함) 및 큰 따옴표 대신 qq{} 를 사용할 수 있습니다. 예를 들어, q{I'm 64} 는 보간되지 않은 문자열 내에서 아포스트로피를 사용할 수 있습니다 (그렇지 않으면 문자열을 종료합니다).

진술 :

print qq{$name said: "I'm $age".}; # Paul said: "I'm 64".
print "$name said: \"I'm $age\"."  # Paul said: "I'm 64".

똑같은 일을하지만 처음에는 문자열 내에서 큰 따옴표를 이스케이프 할 필요가 없습니다.

변수 이름이 주변 텍스트와 충돌하면 ${var} 구문을 사용하여 다음과 같이 명확하게 할 수 있습니다.

my $decade = 80;
print "I like ${decade}s music!"  # I like 80s music!

보간 된 것

Perl은 변수 이름을 보간합니다 :

my $name = 'Paul';
print "Hello, $name!\n"; # Hello, Paul!

my @char = ('a', 'b', 'c');
print "$char[1]\n"; # b

my %map = (a => 125, b => 1080, c => 11);
print "$map{a}\n"; # 125

배열은 전체적으로 보간 될 수 있고, 요소는 공백으로 구분됩니다.

my @char = ('a', 'b', 'c');
print "My chars are @char\n"; # My chars are a b c

Perl은 해시 전체를 보간하지 않습니다 .

my %map = (a => 125, b => 1080, c => 11);
print "My map is %map\n"; # My map is %map

함수 호출 (상수 포함) :

use constant {
    PI => '3.1415926'
};
print "I like PI\n";         # I like PI
print "I like " . PI . "\n"; # I like 3.1415926

Perl은 \ 시작하는 이스케이프 시퀀스를 보간합니다.

\t                  horizontal tab
\n                  newline
\r                  return
\f                  form feed
\b                  backspace
\a                  alarm (bell)
\e                  escape

보간 \n 프로그램 작동 시스템에 의존한다 : 그것은 현재 시스템 규칙에 따라 개행 문자 (들)를 생성한다.

펄은 \v 보간하지 않는다 . C와 다른 언어의 수직 탭을 의미한다.

문자는 해당 코드를 사용하여 해결할 수 있습니다.

\x{1d11e}     𝄞 by hexadecimal code
\o{350436}    𝄞 by octal code
\N{U+1d11e}   𝄞 by Unicode code point

또는 유니 코드 이름 :

\N{MUSICAL SYMBOL G CLEF}

네이티브 인코딩의 0x00 에서 0xFF 까지의 코드가있는 문자는 더 짧은 형식으로 처리 할 수 ​​있습니다.

\x0a     hexadecimal
\012     octal

제어 문자는 특수 이스케이프 시퀀스를 사용하여 지정할 수 있습니다.

\c@      chr(0)
\ca      chr(1)
\cb      chr(2)
...
\cz      chr(26)
\c[      chr(27)
\c\      chr(28) # Cannot be used at the end of a string
                 # since backslash will interpolate the terminating quote
\c]      chr(29)
\c^      chr(30)
\c_      chr(31)
\c?      chr(127)

대문자는 "\cA" == "\ca" 와 같은 의미입니다.

\N{...} 제외한 모든 이스케이프 시퀀스의 해석은 플랫폼 및 인코딩 종속 코드를 사용하기 때문에 플랫폼에 따라 다를 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow