open( IN, "pass.dat" ) or die "Can't open pass.dat: $!";
$f_data = <IN>;
close( IN ) or die "Can't close pass.dat: $!";
$f_data1 = $f_data;
$f_data2 = $f_data;
$f_data1 =~ s/<br>//g;
$f_data2 =~ s/\S//g;
open( OUT, ">log.dat" ) or die "Can't open log.dat: $!";
select OUT;
print "$f_data1";
print "$f_data2";
select STDOUT;
close( OUT ) or die "Can't close word.js: $!";
上記スクリプトでは、pass.datの一行目しか読み込まれません。全行を読み込むためにはどのように書き換えればいいのでしょうか?宜しくお願いします。
No.3
- 回答日時:
perlでは、テキストの読み込みの際に参照する「行区切り」を指定する変数 "$/"があります。
質問文の方法のように1回読み込みを行うとファイルの先頭から行区切りまでを1行として読み込みます。
一度にファイル全体を読み込むには、"$/"にundefをセットします。
$/ = undef;
なお、$/に別の文字を代入するとその文字が行区切り文字とみなされます。
$/ = 'a' # 'a'という文字まで読み込むようになる
No.2ベストアンサー
- 回答日時:
Perlは行テキスト指向処理なので
open( IN, "pass.dat" ) or die "Can't open pass.dat: $!";
@A_DATA = <IN>; ## 配列に読み込む:スカラ型だと1行目しか入らない。
close( IN ) or die "Can't close pass.dat: $!";
$f_data1 = join("\n",@A_DATA); ## どうしても全行スカラ型に入れたいなら、各行ごとに好きな記号(ここでは改行)をつけてくっつける。
となります。
また「IN」とはしないで「IN01」などとした方が悪い癖が付かなくて良いと思います。
No.1
- 回答日時:
<IN>はスカラコンテキストですと1行ずつ結果を返し、読み込める行がなくなるとundef値を返します。
よって、while($f_data = <IN>){
# 繰り返したい処理
}
とやると、1行目から最後の行まで処理されます。
この回答への補足
申し訳ございません。よく見直してみましたら、二行目以降は読み込まれるようになったのですが、一行目が読み込まれていませんでした。以下のように変更してみましたが、どこがおかしいのでしょうか?
open( IN, "pass.dat" ) or die "Can't open pass.dat: $!";
$f_data = <IN>;
open( OUT, ">log.dat" ) or die "Can't open log.dat: $!";
select OUT;
while($f_data = <IN>){
$f_data1 = $f_data;
$f_data2 = $f_data;
$f_data1 =~ s/<br>//g;
$f_data2 =~ s/\S//g;
print "$f_data1";
print "$f_data2";
}
select STDOUT;
close( OUT ) or die "Can't close word.js: $!";
close( IN ) or die "Can't close pass.dat: $!";
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- MySQL MYSQL エラー 2 2022/10/18 11:37
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- UNIX・Linux Linuxについて質問です。 以下のような設定をしたMakefileを作成するにはどう記述すればよい 1 2023/02/03 20:10
- 工学 Pythonの3Dグラフ表示に関する質問です。 1 2022/12/06 15:03
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- その他(プログラミング・Web制作) Python - Excel で Webからデータを連続取得したいのですが エラーが出ます 1 2023/07/06 20:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlで特定行から特定行までを...
-
batファイルでrenameができませ...
-
エラー 'dir.h' : No such fi...
-
HTMLのフォームで画像と文...
-
ExcelをCSV書き出す場合のシー...
-
awkスクリプトでダブルクォーテ...
-
Perlの変数に文字数制限(容量...
-
readdir()で得られるファイル・...
-
ファイル全てを .xlsm に変更し...
-
while(<ハンドラ>) {} で行数を...
-
パスから最後のディレクトリだ...
-
テキストデータから指定した1...
-
一定時間が経過したフォルダの削除
-
htaccessで特定のディレクトリ...
-
ReadLineでの読み出し行を指定する
-
1行がやたら長いテキストをバッ...
-
while文がうまく動かない
-
chdirがうまくできない
-
openした後、closeしないでプロ...
-
VBAでタブ区切りテキストの保存...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perlで特定行から特定行までを...
-
perlでcsvファイルを読む(ダブ...
-
CSVデータの編集の際の重複チェ...
-
CSVファイルのデータの行数を取...
-
Perlの初心者です。2重ループ...
-
CSVファイルをperlプログラムで...
-
Perlで空白行を削除
-
MATLAB std::exceptionエラー
-
Argument "\\\\n" isn't numeri...
-
cgiのログの書き方
-
Perlでの重複要素カウントにつ...
-
バッチファイルの作り方(CSV→...
-
awkスクリプトでダブルクォーテ...
-
VBAでCSVファイルの特定行を書...
-
DOSコマンドで、標準出力を出力...
-
ExcelをCSV書き出す場合のシー...
-
openした後、closeしないでプロ...
-
close()で例外が投げられる理由
-
batファイルでrenameができませ...
-
VBAでCSVファイルを途中行まで...
おすすめ情報