すいません。教えてください。
テスト,:10,田中<TANAKA>NONAMAEHA一郎<ITIROU>TO言<I>IMASU,N000,123,__,050210,99999,
が$_に入っているとして、これを
テスト,:10,田中NONAMAEHA一郎TO言IMASU,N000,123,__,050210,99999,
テスト,:10,田中NONAMAEHA一郎TOIIMASU,N000,123,__,050210,99999,
テスト,:10,田中NONAMAEHAITIROUTO言IMASU,N000,123,__,050210,99999,
テスト,:10,田中NONAMAEHAITIROUTOIIMASU,N000,123,__,050210,99999,
テスト,:10,TANAKANONAMAEHA一郎TO言IMASU,N000,123,__,050210,99999,
テスト,:10,TANAKANONAMAEHA一郎TOIIMASU,N000,123,__,050210,99999,
テスト,:10,TANAKANONAMAEHAITIROUTO言IMASU,N000,123,__,050210,99999,
テスト,:10,TANAKANONAMAEHAITIROUTOIIMASU,N000,123,__,050210,99999,
というように<>の部分を展開してout.txtというファイルに出力するプログラムを作りたいです。
どうか、よろしくお願い致します。
No.4ベストアンサー
- 回答日時:
$_="テスト,:10,田中<TANAKA>NONAMAEHA一郎<ITIROU>TO言<I>IMASU,N000,123,__,050210,99999,";
@a = split(/,/,$_,-1);
@b = $a[2] =~ /([^A-Z][^<]*)<([A-Z]+)>/g;
($fmt = $a[2]) =~ s/[^A-Z][^<]*<[A-Z]+>/%s/g;
open(OUT, ">out.txt");
foo([@b], []);
close(OUT);
sub foo {
my @b = @{$_[0]};
my @c = @{$_[1]};
my @d = splice(@b, 0, 2);
if (@d) {
foo([@b], [@c,$d[0]]);
foo([@b], [@c,$d[1]]);
return;
}
$a[2] = sprintf($fmt, @c);
print OUT join(",", @a)."\n";
}
No.3
- 回答日時:
$_="テスト,:10,田中<TANAKA>NONAMAEHA一郎<ITIROU>TO言<I>IMASU,N000,123,__,050210,99999,";
@a=split /,/;
$a[2]=~s/([^A-Z].*?)<([A-Z].*?)>/\2/g;
print join(",",@a) . ",";
No.1
- 回答日時:
$_に入っている文字列ですが、この形では無理ですね。
<TANAKA>を田中と対応させていますが、<>を特殊文字と考えれば
TANAKAは取り出せますが、これが田中と対応するのを理解するには
常識を前提とした推理が必要です。
<田中|TANAKA>ならば<>|を特殊文字とすえば可能でしょう。
やりかたは色々あると思いますが、初心者向けの単純な方法として
つぎのような手順ではどうでしょう。
1.aaa<bbb>ccc<ddd>eee<fff>ggg の文字列を<>で分割し、
aaa bbb ccc ddd eee fff ggg の7個の文字列に分解する。
index関数とsubstr関数でできます。
2.bbb ddd fff を更に|で分解する。
これもindex関数とsubstr関数でできます。
3.次に全組み合わせの結合された文字列を作る。
$a = $b . $c;のように結合できます。
以下URLで全てできるはずです。
http://www.tohoho-web.com/wwwperl.htm
頑張ってください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル中の記述文字の一括置...
-
ドットを含まないファイルの表示
-
ファイル操作
-
VBAでCSVファイルの特定行を書...
-
csvファイルの横方向への改行に...
-
fgets で値が取得できない
-
VBAでCSVファイルを途中行まで...
-
window.open でのファイル指定方法
-
python renameについて
-
sprintfで10進数を桁数指定で16...
-
perlで、後ろの行を読んで、前...
-
コマンドライン引数で正規表現...
-
DOSコマンドで、標準出力を出力...
-
巨大ファイルの行をを逆順に並...
-
ハッシュにファイルハンドル
-
log2の「正確な」計算方法
-
awkスクリプトでダブルクォーテ...
-
【Access2003】VBAでタブ区切り...
-
データファイルをプロットする(...
-
unixでのファイルロックの方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル名を複数個配列で確保...
-
テキストファイルの各行を配列...
-
「パスが見つかりません」とい...
-
ifstream/ofstream について
-
ファイルの内容をスカラー変数...
-
Fortranで1行飛ばして読み込む方法
-
perlで先頭の数値をみて昇順に...
-
特定のデータを更新する
-
Visual Basicを使って三平方の...
-
system関数と引数について
-
タイピング文字の一番後ろがお...
-
[perl] もっとシンプルに改良、...
-
VC++でperlプログラムを動かすには
-
shellのコマンド deffの差分の...
-
資格試験に向け、ipodで見れる...
-
ファイルから検索条件を読み込...
-
Pythonでegrep機能をつかいたい
-
バッチファイルでテキストファ...
-
FORTRANのプログラミング
-
perlでIEのクッキーを削除したい
おすすめ情報