------------------------------------ c:\work\a.bat
c:
cd \work
convert.pl sample.html
convert.pl sample1.html
convert.pl sample2.html
…
------------------------------------- c:\work\convert.pl
$infile=$ARGV[0];
$outfile=$ARGV[0];
# 変換後ファイルは、拡張子をtxtにして区別
$outfile=~ s/\.html/\.txt/;
# ファイルを開く
open( IN, $infile );
@xx = <IN>;
close(IN);
# 抽出行の先頭行番号を取得
$i=0;
for (@xx) {
if ($xx[$i]= ~ /Array/){
$start = $i;
last;
}
$i++;
}
# 抽出行の最後行番号を取得
for ($j = $start; $j <= 100; $j++) {
if ($xx[$j]= ~ /\)\;/){
$end = $i;
last;
}
$j++;
}
# 書き込み用にファイルを開く
open( OUT, "> $outfile" );
for ($k = $start; $k <= $end; $k++) {
print(OUT $xx[$k]);
}
# ファイルを閉じる
close( OUT );
------------------------------------- c:\work\sample.html
<html>
<head>
<script type="text/JavaScript">
<!--
sample();
var a = new Array("ああああ",
"いいいい",
"うううう");
var b = new Array("ええええ",
"おおおお",
"おおおお");
function init(){
}
--></script>
</head>
<body onload="init();">
</body>
</html>
------------------------------
というようにファイルを作り、a.batを実行すると、
htmlファイルのvar aに該当する行(sample.htmlの場合、6~8行目)だけ
取り出して別ファイルに吐き出すようなプログラムを作ってみたのですが、
うまく動きません。
なお、単純にforeach文で@xxをoutfileに出力するのはできました。
部分だけ取り出そうとすると失敗しました。
どこを直せばいいのでしょうか?
No.2ベストアンサー
- 回答日時:
なんかややこしいスクリプトなんで、読み間違ってたら申し訳ないんだけど、
最初に現れたArrayからその後の最初に現れた);までの範囲を
切り出したいと言う話なら、
#!/usr/bin/perl
# -*- coding: utf8 -*
use strict;
use warnings;
use Fatal qw(:void open close);
use feature ':5.10';
while (<>) {
my $cond = /Array/../\);/;
print if ($cond);
last if $cond =~ /E0$/;
}
こんなんとか。
Arrayと);に挟まれた部分全部という話なら
while (<>) {
print if /Array/ .. /\);/;
}
で。
ファイル名の付け替えとかその辺は面倒なので省略。
No.1
- 回答日時:
こんにちは。
# 抽出行の最後行番号を取得
for ($j = $start; $j <= 100; $j++) {
if ($xx[$j]= ~ /\)\;/){
$end = $i;
……
この「$end = $i;」、正しくは
----------------------------
「$end = $j;」
----------------------------
ではないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
openした後、closeしないでプロ...
-
perlをバージョンアップしたら...
-
テキストファイルで提出とは?
-
Perlで時間の計算
-
アルファベットに付いて質問し...
-
perlでリテラル値はメモリにど...
-
TeraPadエディターの操作方法に...
-
Perlのエラーについてご教授く...
-
AI sisterとは、偽物の人ですか?
-
ファイルアイコンの左下に緑の□...
-
perlのrequireの動き方について...
-
perlのプログラミング 部分入れ...
-
Strawberry Perl for Windows ...
-
perl 初等プログラミングについて
-
arduino の割り込み処理について
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
bashスクリプト
-
perlプログラミング 空白行削除
-
perlで2次元配列をサブルーチ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
openした後、closeしないでプロ...
-
perlをバージョンアップしたら...
-
INDIRECT 横に再度抽出したい
-
Perl の外部モジュールの利用方法
-
Perlで特定文字列から特定文字...
-
Perlのエラーについてご教授く...
-
bashスクリプト
-
Strawberry Perl for Windows ...
-
perlで2次元配列をサブルーチ...
-
TeraPadエディターの操作方法に...
-
アルファベットに付いて質問し...
-
perlのflock関数でロックをかけ...
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
Wallpaper Engineでおすすめの...
-
Perlで時間の計算
-
perlのrequireの動き方について...
-
perlでリテラル値はメモリにど...
-
画像が表示でnull; this.src
おすすめ情報