dポイントプレゼントキャンペーン実施中!

最近Perlの勉強を始めたものですが、文章を一文一文として処理することが出来なくてすごく困っています。
例えば、
B a
I b
I c
I d
B e
I f
I k
I m
B h
I n
が入力されたとき
B 4 a
I 3 b
I 2 c
I 1 d
B 5 e
I 4 f
I 3 k
I 2 m
I 1 m
B 2 h
I 1 n を出力されたいのです。
B を区きり文字として、いろいろやってみましたが、うまく出来ませんでした。何方か分かりやすい説明して頂ければ大変有難いのです。

A 回答 (2件)

確かに質問にある例だと、B5e からI1m までなにがどうなって


この出力になるのかわかりませんね。

ということでお遊び。

use strict;
use warnings;
use feature ':5.10';

my $data = do {undef $/; <DATA>};
my @records = split qq{(?=\nB)}, $data;

foreach my $record (@records) {
my $c;
print join qq{\n}, reverse map {s/ /++$c/e; $_} reverse split qq{\n}, $record;
}

__END__
B a
I b
I c
I d
B e
I f
I k
I m
B h
I n

出力結果:
B4a
I3b
I2c
I1d
B4e
I3f
I2k
I1m
B2h
I1n

まあそれっぽくなってるのではないかと。
    • good
    • 0
この回答へのお礼

ご指導有難う御座いました。。今後もよろしくお願い致します。

お礼日時:2009/09/18 13:09

入出力の関係がわかりません.


どのような入力に対してどのような出力がほしいのか, きちんと言葉で表現してください.
    • good
    • 0

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