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
続行するには何かキーを押してください . . .
となり出力ファイルの中身が表示されません。
どこを間違えているのかご指摘いただけないでしょうか?
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
あなたがどう思っているかなど, コンピュータには関係ありません. あなたがどう「書いた」か, それがすべてです.
で, 出力ファイルの中身を表示するというのはこのプログラムのどこに書かれているのですか?
No.3
- 回答日時:
perl には強力なデバッグ機能があります。
$ perl -d スクリプト名
DB<1> n で一行ずつ実行できます。
デバッグモードでは、変数の中身を見る事が出来ます。
DB<1> x @b
もちろん、「print ("ファイル名?";」の行では、「ファイル名?」と表示してくれます。
さて、あなたが、「出力ファイル名の下に検索文字列がずらっと表示されるはずです。」を
想定している箇所を見つけてなぜ表示されないかを確認しましょう。
参考URL:http://homepage3.nifty.com/hippo2000/perltips/pe …
No.4
- 回答日時:
>正しく実行されれば出力ファイル名の下に検索文字列がずらっと表示されるはずです。
「正しく実行されれば」ではなくて「正しくプログラムが書いてあれば」ですね。
どこが間違えてるかは出力ファイルの内容を表示させてるつもりの所をよく観ればわかるんじゃないかな(その場所が存在すればだけど)。
No.5
- 回答日時:
出力ファイルの中身を表示させたいのなら、出力ファイルを読み込みモードでオープンして中身を表示させないと出ないと思います。
プログラムでは、書き込みモードでファイルをオープンしてファイルに書き込んでいるだけで、中身を表示するようなものは書かれていません。ので、その出力ファイルを手動で開けば、中にはちゃんと書き込まれた内容があると思います。ので、次に読み込みでファイルを開き、中身を表示させれば中身が出ると思いますよ。お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
ファイル出力の改行コードをLFに
-
DOSコマンドで、標準出力を出力...
-
Perl 内で実行される Perl が S...
-
エクセルVBAで素数だけを出力す...
-
htmlから、ファイル、もしくはC...
-
教えて!perlから.exeファイル...
-
Active Perl の動作異常について
-
ExcelをCSV書き出す場合のシー...
-
window.open でのファイル指定方法
-
Perlで特定行から特定行までを...
-
batファイルでrenameができませ...
-
ReadLineでの読み出し行を指定する
-
FindFirstFileとFindNextFileで...
-
バッチファイルの作り方(CSV→...
-
close()で例外が投げられる理由
-
MATLABのm-fileについて
-
一定時間が経過したフォルダの削除
-
パスから最後のディレクトリだ...
-
全角と半角文字が混在している...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
DOSコマンドで、標準出力を出力...
-
エクセルVBAで素数だけを出力す...
-
教えて!perlから.exeファイル...
-
sprintfについて
-
Perlでファイルの末尾から指定...
-
CGIから外部コマンド実行時の標...
-
重複するデータを抽出できる秀...
-
ファイル出力の改行コードをLFに
-
timeコマンドの結果をテキスト...
-
sprintfで10進数を桁数指定で16...
-
log2の「正確な」計算方法
-
機器のI/OをArduinoでSDに記録...
-
Perl<->Oracle間での文字化けに...
-
Perl中で teeを使っても戻り値...
-
テキストファイルから日本語部...
-
バッチファイルで、記号を含む...
-
htmlから、ファイル、もしくはC...
-
perlでの出力先設定
-
標準エラーと標準出力をファイ...
おすすめ情報