推測によると、シェル コマンド ラインで実行するコマンドは次のとおりです。
tshark –r input.dump -V |
egrep "Source:|Destination:|Time since reference or first frame:|Source port:|Destination port:" |
grep –v "Vmware" >input.useful
Perl で「同じ」コマンドを実行する最も簡単な方法は、非常に便利なqq{}
表記法を使用して二重引用符を"
. または、実際には、単一引用符で囲むこともできq{}
ます。
my $cmd = q{
tshark –r input.dump -V |
egrep "Source:|Destination:|Time since reference or first frame:|Source port:|Destination port:" |
grep –v "Vmware" >input.useful
};
そして今、あなたはそれを実行することができますsystem
:
system $cmd;
私はあなたの提案を試みましたが、以前とまったく同じエラーが発生しました。
非常に奇妙な。私はこれを試しましたが、これはあなたの例と同形に近いです:
#!/usr/bin/env perl
use strict;
use warnings;
my $cmd = q{
ls -l |
egrep "merge|sort" |
grep -v 'cpp$' > list.out
};
system $cmd;
エラーなしで実行され、list.out
ファイルが生成されました。
-rw-r--r-- 1 jleffler staff 2064 Sep 21 13:54 keysort1.c
-rw-r--r-- 1 jleffler staff 2602 Sep 21 13:54 keysort2.c
-rwxr-xr-x 1 jleffler staff 14488 Sep 21 18:28 merge
-rw-r--r-- 1 jleffler staff 6274 Sep 21 13:54 merge.c
drwxr-xr-x 3 jleffler staff 102 Sep 21 18:28 merge.dSYM
-rw-r--r-- 1 jleffler staff 8633 Sep 21 06:49 mergesort.c
-rwxr-xr-x 1 jleffler staff 26232 Sep 21 18:01 mergesort2
drwxr-xr-x 3 jleffler staff 102 Sep 21 18:01 mergesort2.dSYM
-rw-r--r-- 1 jleffler staff 3335 Sep 21 17:25 msort.c
-rw-r--r-- 1 jleffler staff 16134 Sep 21 06:49 sorttest.c
これは、「sort-merge」ブランチの SO 質問ディレクトリの現在の正しい出力です。
同様のテストを試すことはできますか?シェル ( ) は何に$SHELL
設定されていますか?
コマンドを段階的に構築できますか?
tshark -r input.dump -V > input.raw
' ' viaを実行してsystem
、結果を確認してください。
- '
tshark -r input.dump -V | egrep "Source:|Destination:" > input.parboiled
を実行して、結果を確認してください。
- ' ' を実行
cat input.parboiled | grep -v "Vmware" > input.semiuseful
して、結果を確認してください。
などなど、何かがゲームを放棄する必要があります。極端な場合はset -x;
、コマンドの前に追加して、シェルが実行していると見なすものを確認してください。