프로그래밍백엔드 Perl 개발자

Perl에서 문자열 내에서 변수와 표현식을 보간하는 방법은 무엇이며, 이를 사용할 때 고려해야 할 사항은 무엇입니까?

Hintsage AI 어시스턴트로 면접 통과

답변

Perl은 두 가지 형태의 문자열 리터럴을 지원합니다 — 더블(“)과 싱글(’ 따옴표). 더블 따옴표로 된 문자열 안에서는 보간이 일어납니다: 변수와 특수 기호(예: , \t)는 그 값으로 대체됩니다. 싱글 따옴표 안에서는 보간이 없으며 — 내용이 문자 그대로 해석됩니다.

예:

my $name = "Alex"; print "Hello, $name! "; # Hello, Alex! print 'Hello, $name! '; # Hello, $name! # 표현식 보간은 중괄호를 통해 가능합니다: my $i = 10; print "i + 5 = @{[$i + 5]} "; # i + 5 = 15

특징 및 세부사항:

  • 변수 뒤에 문자가 오는 경우, 변수를 이스케이프하는 것을 잊지 마세요. 그렇지 않으면 Perl은 이를 변수 이름의 일부로 간주합니다.
  • 복잡한 표현식의 경우, 보간 문자열 내에서 @{[ ... ]}를 사용하여 안전하게 표현식의 결과를 문자열에 삽입하세요.

함정 질문

더블 따옴표의 문자열 내에서 변수가 보간되지 않는 경우는 언제인가요?

답변: 변수가 이스케이프된 경우(\$var), 싱글 따옴표 안에 있을 때, 또는 중괄호 구문이 잘못 사용되었거나 변수 이름이 중괄호로 제한되지 않아 문자와 "붙어 버리는" 경우입니다.

my $world = 'earth'; print "Hello, $worlds! "; # 오류: $worlds라는 변수는 없고, $world + 문자 s가 결합됨

주제의 세부사항을 모른 채 발생한 실제 오류 예제들


이야기

대규모 프로젝트에서 로깅을 위해 변수 문자열을 사용했습니다:

my $file = '/tmp/data'; print LOG 'File: $file

';


파일 경로를 볼 것으로 예상했지만, 로그에는 문자 그대로의 텍스트 `$file`이 남았습니다. 싱글 따옴표가 사용되었기 때문입니다. 이 문제는 프로덕션에서 실행한 후 발견되었습니다.

이야기

한 개발자가 중괄호 없이 문자열 내에 변수를 삽입했습니다:

my $user = "bob"; print "User: $user21

";


`bob21`이 출력될 것으로 예상했지만, 인터프리터는 `$user21`이라는 변수를 찾기 시작했습니다(존재하지 않았습니다). 이로 인해 보고서에 빈 값이 나타났습니다.

이야기

문자열 내에서 표현식의 결과를 표시하기 위해 다음과 같은 코드를 사용했습니다:

my $a = 3; print "Sum: $a+5

"; # 기대: 'Sum: 8', 실제: 'Sum: 3+5'


실제로, 보간은 변수만 인정하고, 표현식은 문자 그대로 삽입됩니다. `@{[ ... ]}`를 통해 작업해야 합니다.