くだすれPerl(超初心 ..
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
509:nobodyさん 07/11/27 17:03:00 >>508 my $log = <<'EOF' ; 1107,A,B,C 1108,C,A,D 1109,A,C,B 1110,A,B,C EOF my %table = reverse map{ split /,/, $_,2 } split /\n/, <<'EOF' ; 1,A,B,C 2,A,C,B 3,C,A,D EOF printf "%s\n", join ',', map{ $table{$_} || $_ } split /,/, $_, 2 for split /\n/, $log ; 文字通り参照テーブルをテーブルにするだけだよ。 >>507 人狼の掲示板で聞くのがスジだ。 インストールし忘れ(jcode.plなんか)とかチェックポイントが多すぎて答える気にもならん。 510:508 07/11/27 20:31:16 >>509 有難うございました. 実際やってみまして上の例ではちゃんと出力できたことは確認しました。 しかし%tableの意味するところが勉強不足でちょっと分かりませんでした。 変数等をいじったりしてみたのですが お恥ずかしいところですが、具体的にどのような処理を行っているのか教えて頂けると 幸いです。 511:nobodyさん 07/11/28 00:13:10 my %table~~の行。 「改行区切りのデータをsplit して無名配列に入れ(split...) その要素を最初の,だけで区切って更に無名配列として返し(map{}) 結果として必ず偶数個となっている配列をhashと見なしreverse(reverse) それを%tableと云うhashに収納。」 printf~~の行。 「$logを改行にてsplitして無名配列に入れ(forの後のsplit...) それをfor修飾子にてループ(for)。 その各要素を最初の,だけで区切って無名配列に入れ(forの前のsplit...) その無名配列の要素をkeyとして テーブルにデータがあればテーブルのデータを返し、 なけれはそのまま要素を返す(map{})## で,でjoinして(join...) printf で整形してprint out(printf)」 ## は真面目に $_[1] だけ table見に行かすべきなんだけど メンドかったから、、、 EOF云々は「ヒアドキュメント」 まずは本でhashを覚えるんだ。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
4295日前に更新/307 KB
担当:undef