
No.1ベストアンサー
- 回答日時:
1)読んだ行が区切られる単位なのか、要素なのかを分けて、
2)指定されたファイル名でオープンしたり、出力が終わったらクローズしたり
を割とそのまま書けばよいかと思います。
# 質問文中ではコロンやスペースが全角なのでそのつもりで書いてあります
my $items = 0;# これからファイルに出力する行数
while (<>) {
if ($items == 0 && /:/) {# :の行が区切られる単位とし、
chomp;
my ($name, $num) = split(/:/);
$num =~ s/ //g;# 全角スペースが入っているようなので消しておく
$items = int($num);# :の後の数字がそのグループに入る要素数である。
print "$name, $items\n";
open OUT, ">$name" or die "Cannot open $name...";
}elsif ($items > 0) {# データ数分出力
print OUT $_;
if (--$items == 0) {# 最後の項目だったら
close OUT;# ここでおしまい
}
}
}
# 最初の if に $items == 0 が入れてあるのは、項目にコロンが入っていたらハマるからですが、
# 先に if ($items > 0) { ... } elsif (/:/) { ... } と書けば条件式はシンプルになります。
# ここでは(データファイルの出力順に合わせて)グループ名の指定かどうか判定する方を先にしました。
この回答へのお礼
お礼日時:2011/12/09 09:14
1行1行 何をやっているか説明いただき、ありがとうございます。
まさに このような方法でやりたかったので、これを参考にし、実行してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlのプログラミング 部分入れ...
-
Perlでファイルの末尾から指定...
-
テキストファイルで提出とは?
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
エクセルVBAで素数だけを出力す...
-
DOSコマンドで、標準出力を出力...
-
[awk]uniq -cで複数ファイルの...
-
sprintfについて
-
大量メールの任意のヘッダだけ...
-
log2の「正確な」計算方法
-
[Perl]ファイル出力のエンコー...
-
重複するデータを抽出できる秀...
-
Perl<->Oracle間での文字化けに...
-
文字コードの変換(Shift-JISか...
-
テキストファイルから日本語部...
-
htmlから、ファイル、もしくはC...
-
ファイル出力の改行コードをLFに
-
sprintfで10進数を桁数指定で16...
-
Perl 時間同士の差
-
warnやdieの出力先を変更したい
-
Perlでエラーログに日時をつける
-
エディターでは改行なのにメモ...
-
perlでモジュールを使ってクロ...
おすすめ情報