私の元のスクリプトは次のとおりです。なぜパイプは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