- 締切済み
Perlのプログラミングについて
Perlのプログラミングでつまづきました。 # ファイルから指定文字列を含む行を収集する # 入力ファイルのオープンと読み込み print( "入力ファイル名?" ); $n = <STDIN>; chomp( $n ); open( FIN, "<$n" ) or die "入力ファイルオープンエラー: $!\n"; $n = @a = <FIN>; close( FIN ); print( "$n 行読み込みました\n" ); # 行の収集 print( "検索文字列?" ); $x = <STDIN>; chomp( $x ); $ptn = $x; #指定の文字列 $x = @b = grep( /$ptn/, @a ); print( "$x 行見つかりました\n" ); # 出力ファイルのオープンと書き出し print( "出力ファイル名?" ); $y = <STDIN>; chomp( $y ); open( FOUT, ">$y" ) or die "出力ファイルオープンエラー: $!\n"; print FOUT ( $ptn, "\n" ); print FOUT ( $x, "\n" ); print FOUT ( @b ); close( FOUT ); というプログラムで実行すると C:\My Perl\pl>perl プログラムの実行.pl 入力ファイル名?sample1.txt 168 行読み込みました 検索文字列?k 45 行見つかりました 出力ファイル名?out3-24.txt 続行するには何かキーを押してください . . . となり出力ファイルの中身が表示されません。 どこを間違えているのかご指摘いただけないでしょうか?
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- yamada11
- ベストアンサー率18% (2/11)
No5です。 回答に補足します。 変数の中身を表示したいだけなら。printのFOUTがなければ表示されると思います
- yamada11
- ベストアンサー率18% (2/11)
出力ファイルの中身を表示させたいのなら、出力ファイルを読み込みモードでオープンして中身を表示させないと出ないと思います。プログラムでは、書き込みモードでファイルをオープンしてファイルに書き込んでいるだけで、中身を表示するようなものは書かれていません。ので、その出力ファイルを手動で開けば、中にはちゃんと書き込まれた内容があると思います。ので、次に読み込みでファイルを開き、中身を表示させれば中身が出ると思いますよ。
- wormhole
- ベストアンサー率28% (1626/5665)
>正しく実行されれば出力ファイル名の下に検索文字列がずらっと表示されるはずです。 「正しく実行されれば」ではなくて「正しくプログラムが書いてあれば」ですね。 どこが間違えてるかは出力ファイルの内容を表示させてるつもりの所をよく観ればわかるんじゃないかな(その場所が存在すればだけど)。
- auto-mata
- ベストアンサー率12% (1/8)
perl には強力なデバッグ機能があります。 $ perl -d スクリプト名 DB<1> n で一行ずつ実行できます。 デバッグモードでは、変数の中身を見る事が出来ます。 DB<1> x @b もちろん、「print ("ファイル名?";」の行では、「ファイル名?」と表示してくれます。 さて、あなたが、「出力ファイル名の下に検索文字列がずらっと表示されるはずです。」を 想定している箇所を見つけてなぜ表示されないかを確認しましょう。
- Tacosan
- ベストアンサー率23% (3656/15482)
あなたがどう思っているかなど, コンピュータには関係ありません. あなたがどう「書いた」か, それがすべてです. で, 出力ファイルの中身を表示するというのはこのプログラムのどこに書かれているのですか?
- Tacosan
- ベストアンサー率23% (3656/15482)
どこで表示してるの?
補足
正しく実行されれば出力ファイル名の下に検索文字列がずらっと表示されるはずです。