したがって、次のファイルのみを含む clip.txt があります。
<a href="https://en.wikipedia.org/wiki/Kanye_West">Kanye West</a>,
<a href="http://en.wikipedia.org/wiki/Chris_Martin">Chris Martin</a>
今、私は <...> の間のすべてを削除したいので、最終的には
カニエ・ウェスト、クライスト・マーティン。
perlで私は現在のコードを持っています:
#!/usr/local/bin/perl
$file = 'clip.txt';
open(FILE, $file);
@lines = <FILE>;
close(FILE);
$line = @lines[0];
while (index($line, "<") != -1) {
my $from = rindex($line, "<");
my $to = rindex($line, ">");
print $from;
print ' - ';
print $to;
print ' ';
print substr($line, $from, $to+1);
print '|'; // to see where the line stops
print "\n";
substr($line, $from, $to+1) = ""; //removes between lines
$counter += 1;
}
print $line;
すべての「印刷」行はかなり冗長ですが、デバッグには適しています。
結果は次のようになります。
138 - 141 </a>
|
67 - 125 <a href="http://http://en.wikipedia.org/wiki/Chris_Martin">Chris Martin|
61 - 64 </a>, |
0 - 50 <a href="https://en.wikipedia.org/wiki/Kanye_West">|
Kanye West
最初に、スクリプトは 138 ~ 141 の間の位置を見つけ、それを削除します。次に、67 ~ 125 が見つかりますが、67 ~ 137 が削除されます。次に、61 ~ 64 が見つかりますが、61 ~ 66 が削除されます。
なぜこれを行うのですか?一番下の行で 0 ~ 64 が見つかり、完全に削除されます。だから私はここでロジックを見つけることができません。