• ベストアンサー

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

グローバルな特殊ファイルハンドル_(下線)について、プログラミングPerlでは、 最後に実行したstat、lstat、ファイルテスト演算子の情報をキャッシュするのに用いる特殊ファイルハンドル と説明してあります。 これを試すために、 -f('file'); print(<_>) このコードを実行すると、 readline() on unopened filehandle _ となってしまいます。 特殊ファイルハンドル_(下線)はどうやって使うのでしょうか

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

-f 'file'; -x _; とか.

zyousuke
質問者

お礼

こんにちは! -x _; でfileの実行可否が返りました! もう少し想像力を働かせていれば自己解決できた問題でしたね失敬

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

たぶん蛇足だと思うけどちょっと説明: ファイルテスト演算子は結局 stat してるようなもので, 「同じファイルに対して複数回のファイルテストをする」と何回も stat することになっちゃう. これは無駄なので「前に stat して得られた情報を参照してね」ってのがこいつの意味です.

zyousuke
質問者

お礼

こんにちは ちょっと気になったので実験してみました print(-f('file'), "\n"); sleep(9); print(-x(_), "\n") 最初のファイルテスト演算子を実行してから次のファイルテスト演算子を実行するまでの間に別のプロセスから素早く'file'の実行属性を取り除いてみました すると、このコードはファイル属性が変更されているにも関わらず、まんまと誤った属性を報告してきました。 キャッシュするとはそういうことだったのですね

関連するQ&A