以下のようなソースを書きました。
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で質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Ruby パイソンでテキストファイルが読み込めない 1 2022/11/14 16:42
- Perl perlのflock関数でロックをかけたままopen関数で何度もファイルを開きなおすことはできますか 3 2023/05/01 22:25
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
window.open でのファイル指定方法
-
fgets で値が取得できない
-
MATLABのm-fileについて
-
WindowsでPerlをする際,1行目の...
-
ファイル全てを .xlsm に変更し...
-
ファイルの存在の有無を確かめ...
-
巨大なテキストの最終行を取得...
-
fortranのopen文について。
-
行を指定して削除する方法PERL
-
JSP URLに表示される拡張子 .jsp
-
PerlでHTTPを扱いたい
-
VBAでCSVファイルの特定行を書...
-
ReadLineでの読み出し行を指定する
-
awkスクリプトでダブルクォーテ...
-
VBAで巨大なファイルの途中から...
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルを途中行まで...
-
htaccessで特定のディレクトリ...
-
fopenでディレクトリ内の全ファ...
-
ファイル出力の改行コードをLFに
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python renameについて
-
fgets で値が取得できない
-
window.open でのファイル指定方法
-
巨大なテキストの最終行を取得...
-
ファイル全てを .xlsm に変更し...
-
read() on unopened filehandle...
-
csvファイルの横方向への改行に...
-
VBAコードを張り付け後のエクセ...
-
Firefox で file:// で始まる U...
-
JSP URLに表示される拡張子 .jsp
-
drtファイルはどうしたら開...
-
並び方、
-
重複ファイル名ある場合ファイ...
-
VBA テキストファイルを読み取...
-
cgiでサーバーにファイルを追加...
-
HTMLのフォームで画像と文...
-
WindowsでPerlをする際,1行目の...
-
バイナリファイルの出力
-
Perlでのパーミッション変更の仕方
-
foreach内での変数の扱い?
おすすめ情報