0

Perl は初めてなので、このコードに関連する次の質問について誰かが親切に説明してくれることを願っています:

$url ="some url";
open FH, "wget -q -O- $url|" or die;  
while(<FH>){  
  ...  
}  
  1. the second -in とは-O-どういう意味ですか?
  2. |とはどういう$url |意味ですか?
  3. 次のようにFHでシークを試みました:
 $url ="some url";
 open FH, "wget -q -O- $url|" or die;  
 seek(FH, 14000, 1);  

しかし、位置を でエコーするとecho tell(FH)、0 が返されます。なぜ FH を求められなかったのか、誰にもわかりませんか? ありがとう

4

3 に答える 3

2

-O-引数は、wgetファイルではなく、標準出力(つまり、コンソール/ターミナル)に出力するように指示します。

オープンコールのパイプはパイプオープンです。ファイルハンドルは、プロセスの出力(この場合はどのwget出力)に接続されます。

このtellタイプのファイルハンドルを呼び出しても、実際には意味がありません。根底にあるのはストリームであり、ファイルではありません。ストリームで異なるものをtell返すことができます、それはOSに依存します。

于 2011-04-25T10:36:51.983 に答える
1

2番目の--in-O-はどういう意味ですか?

からman wget

ドキュメントは適切なファイルに書き込まれませんが、すべてが連結されてファイルに書き込まれます。-をファイルとして使用すると、ドキュメントが標準出力に出力され、リンク変換が無効になります。(./-を使用して、文字通り-という名前のファイルに出力します。)


|は何ですか $urlで| 平均?

$ urlにはなく、その後にあります。

オープンのためのperldocから

ファイル名が「|」で終わる場合 、ファイル名は、出力をパイプで送信するコマンドとして解釈されます

于 2011-04-25T10:37:55.900 に答える
0

2つ目は、ファイルではなく標準出力に出力する-ことを意味します。wgetこれ|は、新しく作成されたwgetプロセスへのパイプを開いており、その出力を読み取ることができることを意味します。

シークはディスク上のファイルには意味がありますが、パイプには意味がありません。プログラムの実行時に出力が生成されるため、「将来ジャンプ」することはできません。

于 2011-04-25T10:36:33.010 に答える