電子書籍の厳選無料作品が豊富!

perlでの処理について、質問です。
test.txtの中に以下の文字列が入っています。
===================================
hoge,apple,orange,grape,aomori,gifu,hokk
aido,aomori,iwate,
akita,yamanashi
hoge,shimane,okinawa,kagoshima,fukuoka,aichi,-,-
===================================

上記のファイル内で、1カラム目をすべて"hoge"で始まるように整形したいです。
整形後のイメージは以下です。
===================================
hoge,apple,orange,grape,aomori,gifu,hokkaido,aomori,iwate,akita,yamanashi
hoge,shimane,okinawa,kagoshima,fukuoka,aichi,-,-
===================================

その場合、perlスクリプトはどのように書くべきでしょうか?
一旦すべての改行を削除し、すべてのカラムを1行にした上で、
hoge→"\nhoge"と置換すれば行けるのですが、while文等の繰り返し処理で、何かできないでしょうか?


よろしくお願いいたします。

A 回答 (2件)

$a = "";


sub puts { print "$a\n" if $a; $a = ""; }
while (<>) { chomp; &puts if (/^hoge/); $a .= $_; }
&puts
    • good
    • 0

while で回すなら, 基本的な形は


while (<>) {
chomp;
if (/hoge/) {
...
} else {
...
}
}
かなぁ. 厳密な条件は不明だけど.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!