飛田先生からの挑戦状「特定条件の文字列を抜き取ってカンマ(,)と改行で区切ったテキストファイルを出力するソース」
[問題]
以下の文字列を「リンク先のURL」と「タグ内の文字列」だけ抜き取って、 カンマ(,)と改行で区切ったテキストファイルを出力するプログラムを書け。
<ul> <li href="http://www.fezero.jp/">FEZ公式</li> <li href="http://fewiki.jp/">FEZwiki</li> <li href="http://www38.atwiki.jp/hisouten/">東方緋想天wiki</li> <li href="http://www.kent-web.com/perl/">Perl入門</li> <li href="http://www.hatena.ne.jp/">はてな</li> <li href="http://www.google.co.jp/">google</li> </ul>
gerocchoの答え -Perlにて-
問題の文字列が"que3.txt"にあるとして。"que3a.txt"を作成(or上書き)し処理後の文字列を書き込む。
use strict; use warnings; open(IN,"que3.txt"); my @array = <IN>; close(IN); my @list; foreach ( @array ) { my $a = index ( $_ , "http:/" ); if ( $a > -1 ) { my $b = index ( $_ , "<" , $a ); my $word = substr ( $_ , $a , $b - $a ); push ( @list , $word ); } } my %http; foreach ( @list ) { my @array = split ( '">' , $_ ); $http { $array[0] } = $array[1]; } my $key; my $val; open (OUT, "> que3a.txt"); while ( ( $key , $val ) = each ( %http ) ) { print OUT "$key , $val\n"; } close (OUT );
これだとハッシュ変数のeachのおかげで順番が不定になりますね…