Bash Here 문서의 Perl 스크립트(변수 출력 없음)?

Bash Here 문서의 Perl 스크립트(변수 출력 없음)?

왜 다음과 같은 Perl 코드가 필요한가요?

mkdir("foo");
print "foo: $!\n";
mkdir("foo");
print "foo: $!\n";

다음을 출력합니다( 없는 디렉토리에서 foo)

perl ./asdf.pl 
foo: 
foo: File exists

하지만 foo다음을 삭제하세요.

$ perl <<EOF 
  mkdir("foo");
  print "foo: $!\n";
  mkdir("foo");
  print "foo: $!\n";
EOF

오류를 삼키고 출력하고,

foo: 
foo: 

답변1

이라는 단어를 인용하고 싶습니다 EOF. 문서 ( man bash) 에서

의 일부가 word인용된 경우 구분 기호는 따옴표를 제거한 결과 word이며 문서의 줄은 여기에서 확장되지 않습니다.

그래서 그것은 다음과 같습니다.

$ perl <<'EOF'

EOF

EOF인용되지 않은 경우 $!Perl로 전송되기 전에 쉘에서 삽입됩니다.

$ cat <<EOF 
  mkdir("foo");
  print "foo: $!\n";
  mkdir("foo");
  print "foo: $!\n";
EOF
  mkdir("foo");
  print "foo: \n";
  mkdir("foo");
  print "foo: \n";

관련 정보