특정 환경 변수를 검사하는 perl 스크립트에서 하위 프로세스를 시작 (필요)하고 싶습니다. 한 예로, 환경 변수는 비어 있어야하지만 비어 있어야합니다.Perl의 % ENV에 빈 문자열 값이있는 키가 Windows 하위 프로세스를 표시하는 이유는 무엇입니까?
$ENV{"GREETING"} = "Hello World"; # Valid
$ENV{"GREETING"} = ""; # also valid
$ ENV { "GREETING"} = ""을 설정할 수 있습니다. perl 스크립트 $ ENV { "GREETING"}은 비어 있지만 환경 변수가없는 하위 프로세스에서는 비어 있습니다.
다음은 몇 가지 예제 코드입니다. 이 스크립트 인 env_in.pl은 일부 환경 변수를 설정하고 ZZZ_3은 비어 있습니다. 그런 다음 env_out.pl을 호출하여 환경 변수를 출력하고 ZZZ_3이 출력에서 누락됩니다.
#!/usr/bin/perl
# env_in.pl
use strict;`enter code here`
use warnings;
$ENV{ZZZ_1} = "One";
$ENV{ZZZ_2} = "Two";
$ENV{ZZZ_3} = "";
$ENV{ZZZ_4} = "Four";
my (@cmd) = ("perl", "env_out.pl");
system(@cmd) == 0 or die "system @cmd failed: $?";
다음은 env_out.pl 스크립트입니다.
#!/usr/bin/perl
use strict;
use warnings;
print ($_," = ", $ENV{$_}, "\n") for (sort keys %ENV);
나는 WINXP 상자에 ActiveState의 펄 버전 v5.8.8을 사용하고 있습니다.
나는 이것이 파이썬에서 작동한다는 것을 알고 있지만, 구현 언어에 대한 선택권이 없다. Perl이어야한다.
에 비스타 결과에 모두 딸기 펄과 Cygwin에서 펄을 사용하여. –
이것은 파이썬 스크립트와 교차 점검하기에 좋은 때입니다;) –
DOS에서 필자의 펄 스크립트를 실행하지 않고 IPython에서 실행했습니다 - Doh! –