###前提・実現したいこと
関数呼び出しにより、ファイルの中身を1行ずつ読み込みたい。
うまくいった理由を知りたい!!
###発生している問題・エラーメッセージ
Perlで、ファイルを1行ごとに読み込むプログラムを作っています。
※ファイルはコマンド実行時に引数として与えます。
関数を呼び出す処理を書いていたところ、以下のエラーメッセージが発生しました。
: No such file or directory at read_lines.pl line 17.
###該当のソースコード
Perl
1&read_lines; 2sub read_lines{ 3 my $file = shift; 4 open(my $fh, '<', $file) or die "$file: $!"; 5 my @lines = <$fh>; 6 foreach my $line (@lines) { 7 print $line; 8 } 9}
###試したこと
「fileが無いよ」と言われていて、もしや「変数のスコープ」の問題かと考えました。
以下のように変数fileを関数の外で宣言した所、問題なくファイルの中身を1行ずつ標準出力することができました。
Perl
1my $file = shift; 2&read_lines; 3sub read_lines{ 4 open(my $fh, '<', $file) or die "$file: $!"; 5 my @lines = <$fh>; 6 foreach my $line (@lines) { 7 print $line; 8 } 9}
成功はしたのですが、なぜうまくいったのか理解できていないので、コメントを頂きたく質問致しました。
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/08 15:25
2016/10/08 15:40
2016/10/09 03:35