以下のようなソースを書きました。
HTMLファイルを読み込み、タグを全て削除して他のファイルに書き込むソースです。
しかし、上手く動作しません。
問題点を教えていただけませんでしょうか。
お願いします。
#!/usr/local/bin/perl
package www3sub2;
sub main(){
open(FH, "<googlefile3_.txt");
my @file = <FH>;
close(FH);
open(OUTB,"> googlefile6.txt");
foreach(@file){
my $line = $_;
$line =~ s/<("[^"]*"|'[^']*'|[^'">])*>//g;
print OUTB "$line";
close(OUTB);
}
}
1;
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
#!/usr/local/bin/perl
package www3sub2;
sub main(){
open(FH,'<googlefile3_.txt');
my @file=<FH>;
close(FH);
$file=join '',@file;
$file=~s/<.*?>//sg;
open(OUTB,'>googlefile6.txt');
print OUTB $file;
close(OUTB);
}
1;
※
$a=1;
print "$a";
とすると、二倍ぐらいのメモリを使うので、ご注意。
No.4
- 回答日時:
> my @file = <FH>;
このように読みこむと、@fileには1行を一つの要素とするリストが入ります。このとき、改行コードも一緒に読み込まれます。
> foreach(@file){
> my $line = $_;
> $line =~ s/<("[^"]*"|'[^']*'|[^'">])*>//g;
> print OUTB "$line";
> }
> close(OUTB);
それをこのように処理すると
・$line =~ は対象にする1行だけしか置換しない。よって、例にある <html lang="ja" は>が無いのでパターンにマッチせず、削除されない。
→1行ずつ処理するのではなく、joinを使うなどしてファイル全体が1つの文字列になるようにして、それに対して置換を行う
・改行文字は残る。よって、「Perlでファイルを読み込みタグを削除する方法 - Perl - 教えて!goo」*だ*け*にはならない。
→ 改行文字をそのままにするのか、削除するのか、別な文字に置き換えるのか、目的によって方針を決める
No.3
- 回答日時:
最初の1行しか出ないのは、1行表示した直後にclose(OUTB)でファイルを閉じてしまっているからですね。
それと、CGIでやるなら、排他処理とか考えておいた方がよくないですか?flock使うとか
この回答への補足
例えば、
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja"
xmlns:og="http://ogp.me/ns#"
xmlns:mixi="http://mixi-platform.com/ns#"
xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="content-language" content="ja">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7">
<title>Perlでファイルを読み込みタグを削除する方法 - Perl - 教えて!goo</title>
・・・・・以下略・・・・・・
と書き込まれたテキストファイルを読み込んで、
Perlでファイルを読み込みタグを削除する方法 - Perl - 教えて!goo
という文字だけにしたいのです。
宜しくお願いします。
No.2
- 回答日時:
あなたのいう「タグ」とやらはどのような形式をしているのですか? そして, どのような入力に対していかなる出力を期待しているのか,
単純な例を出してもらえませんか?お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LaTeXのinputの応用について
-
AutoNts
-
window.open でのファイル指定方法
-
繰り返し表示
-
fgets で値が取得できない
-
区切りファイルの列ソートについて
-
MATLABのm-fileについて
-
VBA テキストファイルを読み取...
-
ファイルの存在の有無を確かめ...
-
圧縮された.tgzファイルの一部...
-
close()で例外が投げられる理由
-
タブの色を変更する方法
-
[perl] もっとシンプルに改良、...
-
エクセルVBA コードが同じでも...
-
バッチファイルの作り方(CSV→...
-
VBAでCSVファイルの特定行を書...
-
VBAで巨大なファイルの途中から...
-
ExcelをCSV書き出す場合のシー...
-
VBScriptでファイル保存先のデ...
-
FORTRANのプログラミング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python renameについて
-
window.open でのファイル指定方法
-
MATLABのm-fileについて
-
fgets で値が取得できない
-
csvファイルの横方向への改行に...
-
巨大なテキストの最終行を取得...
-
Firefox で file:// で始まる U...
-
JSP URLに表示される拡張子 .jsp
-
重複ファイル名ある場合ファイ...
-
ファイルの存在の有無を確かめ...
-
ファイル全てを .xlsm に変更し...
-
PerlでのUseless use...
-
行を指定して削除する方法PERL
-
VBA テキストファイルを読み取...
-
HTMLのフォームで画像と文...
-
perl ファイルが開かない
-
並び方、
-
read() on unopened filehandle...
-
drtファイルはどうしたら開...
-
VBAコードを張り付け後のエクセ...
おすすめ情報