• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perl:ファイルハンドルをスカラー変数にすると変)

Perl: ファイルハンドルをスカラー変数にすると変

このQ&Aのポイント
  • Perlのファイルハンドルで、昔はINやOUTやFILEのようにベアワード(裸のワード)を使っていたと思います。
  • IN、OUTがグローバル名になってしまい、他のモジュールと衝突することがあるということで、myつきのスカラー変数にした方が良いと言われました。
  • printの後ろに来るのは出力する文字列ではなくファイルハンドルだと、正しく判断してもらえるもっと美しい書き方はあるのでしょうか。

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

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

残念ながら print $out $_; でがまんしてください.

参考URL:
http://perldoc.perl.org/functions/print.html
TYWalker
質問者

お礼

なんと!そうなのですか。 ううーん、それだと open OUT '>', 'out.txt'; ~ print OUT; の方が美しいような。。 ありがとうございます。

TYWalker
質問者

補足

もしかして、$_も流行らないんでしょうかねェ。。 #! /bin/perl # # fh_scalar.pl use strict; use warnings; open my $in, '<', 'in.txt'; open my $out, '>', 'out.txt'; while (my $str = <$in>) {  print $out $str; } close $in; close $out; とか? ううん、ぼくの知ってるあの簡潔なPerlじゃないような・・・・・・ やっぱりINとOUTで生きて生きたいんですけど、たとえば発表会とかでそう書いていると笑われるレベルなんでしょうかねぇ~~

その他の回答 (1)

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

どのくらいの大きさのプログラムで, どんなことをしたいんですか? それによって「どう書けばいいか」は変わってきますよ. 例えば, ここに挙がっているくらいのことなら, 私はファイルのオープンなどしません. 標準入力から読み込んで標準出力に書き出すようにします. そうすれば, 「美しい書き方」なんかで悩まなくってすむ.

TYWalker
質問者

お礼

ありがとうございます。 ううん、「そもそも何をしたいんですか」というのは、コンピューターの世界で頭がいい人が頭が悪い人をやりこめるときに使う典型的な表現ですね。。 それだと、頭が悪い人は言い返せなくなってしまいますが、「本当に聞きたかったこと」は聞けなくて、モヤモヤした気持ちが残ることになりませんか。 分かっておられるとおり、まさか、このコードの作例をそのまま使おうとは思いません。 もしそうであれば、私はそもそもプログラミングなどせず、UNIXであればcat、Windowsであればtypeを使います。 私は、最近のベストプラクティスとして、ファイルハンドルにベアワードを使わず、スカラー変数を使うということを聞きかじって、でも暗黙的な$_と併用すると問題が起きるな、と一般的に思っただけです。 推奨される書き方をして、$_がむき出しになるのは異様に思えたので、何か私が見落としている、勘違いしているのであれば、それを聞きたいと思ったんです。 そうではない、ということですね。 「美しい書き方」なんかで悩むのは、そもそも意味がない、ということでしょうか。 そうであれば確かに私はそうは思っていませんでした。 いずれにせよ、ありがとうございます。

TYWalker
質問者

補足

ううーん、ちょっとお礼で不必要に八つ当たりしていますね・・・。 申し訳ありません。 私の考えでは、Perlには「文脈を読んで、ファイルハンドルが渡されたときはファイルハンドルが渡されたと察して欲しい」と思います。

関連するQ&A