-1

これに対する答えを探していましたが、運がありません。基本的なものが欠けていると思うので、恥ずべき質問をします。このコードは、ファイルをアップロードして抽出し、フォームの選択に基づいてアップロードされたファイルから HTML 形式で情報を表示する HTML フォーム + CGI スクリプトの一部です。この部分では、「mylogs」というディレクトリに .xml ファイルのリストを作成し、パスの一部を削除して文字を追加し、有効な HTTP リンクにします。

まで実行されfor (@array) {s/^/<a href="/};、小なり文字が問題を引き起こしています。これを削除すると、他のすべてが処理されるためです。小なり記号が含まれていると、すべての出力が削除されます。

my $dir = "$upload_dir/var/mylogs";
my @array = <$dir/*.xml>;
for (@array) {s/\/volume1\/web//g};
for (@array) {s/^/http:\/\/192.168.1.155/g};
for (@array) {s/^/<a href="/g};
for (@array) {s/$/<a\/>/g};

私もキャラクターをエスケープしようとしましたが、うまくいきませんでした。なぜそれが起こるのか、または上記の最終結果を達成するためのより良い方法はありますか?

御時間ありがとうございます。

4

2 に答える 2

4

タグを適切に閉じていません(または/gを置き換えるときに修飾子を使用する必要はありません):^$

$_ = '/foo';
s/^/http:\/\/192.168.1.155/;   
  # Result is: http://192.168.1.155/foo
s/^/<a href="/;
  # Result is: <a href="http://192.168.1.155/foo
s/$/<a\/>/;
  # Result is: <a href="http://192.168.1.155/foo<a/>
  # Should be: <a href="http://192.168.1.155/foo"> What do you want here? </a>

作成した HTML のソースを実際に見ましたか。

于 2013-04-14T01:10:04.020 に答える
2

あなたは自分の問題を実証しておらず、あなたの主張は誤りです。

$ perl -E'
   my @array = qw( foo bar );
   for (@array) {s/^/<a href="/g};
   say for @array;
'
<a href="foo
<a href="bar
于 2013-04-14T02:25:04.007 に答える