내 원본 스크립트는 다음과 같습니다 :Perl의 오염 모드에서 파이프가 열리지 않는 이유는 무엇입니까?
my $cmd = "dir";
open (H, "$cmd |");
my @result = <H>;
close (H);
print STDERR @result,"\n";
이 스크립트는 정상적으로 작동합니다. 스크립트에 다음 줄을 추가하면 작동하지 않습니다.
$ENV{"LD_LIBRARY_PATH"} = "/opt/VRTSsfmh/lib";
$ENV{PATH}="/usr/bin:/bin:/sbin:/usr/sbin";
delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'};
파이프 열기가 호출 될 때 Perl은 무엇을 사용합니까?
다음 코드를 추가하면 문제가 해결되었습니다.
if ($^O =~ /Win32/i)
{
$ENV{'SystemRoot'} =~ /([A-Z]:(\\[A-Za-z0-9_]+)+)/;
my $system32_dir = $1."\\system32";
$ENV{'PATH'} = $system32_dir;
}
"작동하지 않음"이라고 말하면 대개 어떻게 실패하는지 자세히 설명하는 데 도움이됩니다. 예를 들어, 오류 메시지를 생성합니까? 그렇다면 그 메시지는 무엇입니까? – pjf