電子書籍の厳選無料作品が豊富!

グローバルな特殊ファイルハンドル_(下線)について、プログラミングPerlでは、

最後に実行したstat、lstat、ファイルテスト演算子の情報をキャッシュするのに用いる特殊ファイルハンドル

と説明してあります。

これを試すために、

-f('file');
print(<_>)

このコードを実行すると、

readline() on unopened filehandle _

となってしまいます。

特殊ファイルハンドル_(下線)はどうやって使うのでしょうか

A 回答 (2件)

-f 'file';


-x _;
とか.
    • good
    • 0
この回答へのお礼

こんにちは!

-x _;
でfileの実行可否が返りました!

もう少し想像力を働かせていれば自己解決できた問題でしたね失敬

お礼日時:2011/06/28 03:59

たぶん蛇足だと思うけどちょっと説明:


ファイルテスト演算子は結局 stat してるようなもので, 「同じファイルに対して複数回のファイルテストをする」と何回も stat することになっちゃう. これは無駄なので「前に stat して得られた情報を参照してね」ってのがこいつの意味です.
    • good
    • 0
この回答へのお礼

こんにちは

ちょっと気になったので実験してみました

print(-f('file'), "\n");
sleep(9);
print(-x(_), "\n")

最初のファイルテスト演算子を実行してから次のファイルテスト演算子を実行するまでの間に別のプロセスから素早く'file'の実行属性を取り除いてみました
すると、このコードはファイル属性が変更されているにも関わらず、まんまと誤った属性を報告してきました。

キャッシュするとはそういうことだったのですね

お礼日時:2011/07/12 00:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!