Perl 스크립트의 shebang 행에서 -CSDA
옵션에 대해 내가 아는 생각을 정식으로 확인하거나 수정할 사람을 찾고 있습니다.Shebang 라인에서만 지정된 -CSDA가 무엇입니까?
-CSDA
에 대한 설명은 perldoc perlrun을 참조하십시오. 간단히
- S : 입력 및 출력 둘 다에 대한 기본은 PerlIO 층
- 스트림 UTF-8이된다 :
STDIN
,STDOUT
및STDERR
은 UTF-8- D가있는 것으로 가정된다 @ARGV을 요소는 문자열로 인코딩 될 예정이다 UTF-8
-CSDA
이 효과를 가지려면perl -CSDA script.pl
과 같이 명령 줄에 지정해야합니다.이전에 표준 스트림이 이미 열려 및
@ARGV
이미-CSDA
이미뿐만 아니라 명령 줄에 지정하지 않는 한이 검출 된 시간에 의해 채워 것 때문에 자동으로 실패 할 것 오두막 라인에 5.10,-CSDA
합니다.5.10 이후에 shebang 줄에만 나타나는
-CSDA
은 해당 문제로 인해perl
이 울리도록합니다.와 함께 작동하는 데 사용
-CSDA
와 스크립트perl
의 사전 5.10이 명령 줄에서 해당 옵션 (그리고 옵션으로 호출되지 않았기 때문에에만 지정된 경우-CSDA
가의 오두막 라인에서 제거해야한다 shebang 선, 아무것도하지 않았다).
위의 내 가정 중 어떤 것이 틀린지에 대한 확실한 의견을 듣고 싶습니다.
+1. 마지막 항목은'/ usr/bin/perl'이 인터프리터가 아니지만 호출 할'perl'의 버전을 결정하는 프로그램입니다 (예를 들어, OS X 시스템에서'5.8'과'5.10' 공존하는 경우), shebang 행의'-CSDA'는 결국'perl'이 호출 될 때 당황합니다. –
이것이 사실이라면 래퍼 스크립트의 버그 일 것입니다. 그러나 Mac에서 확인한 결과 문제가 실제로 5.10.0 (OS X 10.6.6과 함께 제공됨)에서 -C가 항상 허용되지 않는 반면, 5.10.1 (Linux 컴퓨터에서 사용하는 것임) 지정된 플래그가 이미 활성화되어 있으면 허용됩니다. shebang에서 perl5.8.9를 지정하면 올바르게 -CSDA가 적용됩니다. – Anomie
설명해 주셔서 감사합니다. 매우 감사. –