1

以前の投稿は、私が試してみたいものに近いように見えます: Multiple Substitutions

ここに私が作ろうとしている置換があります:

$description =~ s/\"/\\"/g;
$description =~ s/\n/<br>/g;

CGI使用しているスクリプトを表示UltraEditすると、正しくないように見えます。最初の行をコメントアウトすると、($description =~ s/\"/\\"/g;)すべてのコードが適切に表示されます。

エラーの内容がわかりません。

4

2 に答える 2

2

UltraEdit のメイン ウィンドウの下部にあるステータス バーに文字列Perlで示されるように、アクティブなファイルが Perl 構文で強調表示されたファイルである場合、メイン メニューの [ Advanced] - [Configuration] - [Editor Display] - [Syntax Highlighting ] から UltraEdit で開きます。

Perlは、インストールされているワードファイル(またはUltraEdit の古いバージョンの言語)のリストで既に選択されています。[開く] ボタンをクリックすると、 Perlの構文強調表示の定義を含むワードファイルが開きます。構成ダイアログはCancelで閉じる必要があります。

UltraEdit v22.0 と共にインストールされたPerlの構文強調表示ワードファイルには、最初の行として次の行があります。

/L5"Perl" PERL_LANG EnableMLS Line Comment = # Line Comment Preceding Chars = [~[^]^^$/\(] Block Comment On = =pod Block Comment Off = =cut Block Comment On Alt = =item Block Comment Off Alt = =cut Escape Char = \ File Extensions = CGI PL PM PLX

この構文強調表示の問題で重要なのは、次のとおりです。


  1. Perl で文字列が複数行にまたがることができるように、複数行の文字列の強調表示を有効にするEnableMLS 。

  2. Escape Char = \
    文字列内の二重引用符と単一引用符のエスケープ文字を定義します。

  3. String Chars = "'
    ここに存在しないと、二重引用符と単一引用符である文字列の開始と終了をマークする文字に内部デフォルトが使用されます。

UltraEdit には、構文を強調表示するための実際の Perl 言語のインテリセンスがありません。したがって、example ブロックの最初の行の二重引用符が Perl 正規表現内にあることを認識しないため、文字列の強調表示では完全に無視する必要があります。

正規表現の最初の二重引用符は、バックスラッシュでエスケープされるため無視されます。しかし、2 番目の二重引用符はエスケープされていないため、UltraEdit の構文強調表示エンジンはそれを文字列の開始として解釈し、エスケープされていない次の二重引用符までのすべてを文字列として強調表示します。

2 番目の二重引用符をバックラッシュでエスケープして、UltraEdit で正しい構文強調表示を取得することもできます。

$description =~ s/\"/\\\"/g;

最初または 2 番目の二重引用符が、この正規表現でエスケープされた Perl インタープリター用である必要があるかどうか。それでも、この行を UltraEdit や他のほとんどのテキスト エディターで正しく強調表示するのに役立ちます。

Perl のワードファイルは、この構文強調表示の問題に関して何もできないため、閉じることができます。

Lucas Trzesniewskiによって書かれたコメントに同意します: Perl だけが Perl を解析できます。

ちなみに、別の行の色グループに一重引用符または二重引用符を追加することで、二重引用符で囲まれた文字列とは異なる色で一重引用符文字列を強調表示できます。たとえば、追加

/C9"Single Quoted Strings"
'

最大 20 のカラー グループをサポートする UltraEdit >= v17.00 を使用すると、カラー グループ 9 に定義された色とフォント スタイルで一重引用符で囲まれた文字列が強調表示されますが、二重引用符で囲まれた文字列は、文字列に定義された色とフォント スタイルで引き続き強調表示されます。UltraEdit < v17.00 および UEStudio < v11.00 は、最大 8 つのカラー グループのみをサポートします。シンタックス ハイライト定義の詳細については、シンタックス ハイライト言語 wordfile の UltraEdit フォーラム ページ テンプレート を参照してください。

于 2015-04-10T06:04:52.940 に答える
1

私は UltraEdit を持っていませんが、Emacs perl-mode で同じ状況に遭遇することがあります。解決策は、通常、引用符で閉じるコメントを追加することです。つまり、次のようになります。

$description =~ s/\"/\\"/g;  # " Satisfy the angry syntax highlighting gremlins
$description =~ s/\n/<br>/g;

あなたのマイレージは異なる場合があります。

于 2015-04-07T05:40:30.237 に答える