breglfで perl強調No.01921
安久津 さん 01/03/29 10:33
 
●perl.hilight
// breglfで perl強調
// cf 会議室2,発言04509,日付99/11/24,発言者 える,
// 題名 RE 04506 Perl/Rubyのコメント判定
//
// コメント/文字定数のカラー表示は OFF にして使う。
// 欠点は、コードの末尾にあるコメントを強調できない事。
//
// 強調表示4、正規表現。
// $_ =~ m/foo/i;
209,m?\x2f[^\x2f\\]*(?:\\.[^\x2f\\]*)*\x2f[ixgcsmoe]*
// $_ =~ m!foo!i;
209,m\x21[^\x21\\]*(?:\\.[^\x21\\]*)*\x21[ixgcsmoe]*
// $_ =~ s/foo/bar/im;
209,\bs\x2f[^\x2f\\]*(?:\\.[^\x2f\\]*)*\x2f[^\x2f\\]*(?:\\.[^\x2f\\]*)*\x2f
[ixgcsmoe]*
// $_ =~ s!foo!bar!im;
209,\bs\x21[^\x21\\]*(?:\\.[^\x21\\]*)*\x21[^\x21\\]*(?:\\.[^\x21\\]*)*\x21
[ixgcsmoe]*
// 行の強調表示
21,^ *sub +[_a-zA-Z]
// 特に強調表示1、文字定数、コマンドなど。
// q//  q!!  ''
// qq//  qq!! ""
// qx//  qx!! ``
// qw//  qw!! ()
19,\bq(?:q|x|w)?\x2f[^\x2f\\]*(?:\\.[^\x2f\\]*)*\x2f
19,\bq(?:q|x|w)?\x21[^\x21\\]*(?:\\.[^\x21\\]*)*\x21
// "string", "\"string\""
// 'string', 'str\'ing'
// `command`
19,\x22[^\x22\\]*(?:\\.[^\x22\\]*)*\x22
19,\x27[^\x27\\]*(?:\\.[^\x27\\]*)*\x27
19,\x60[^\x60\\]*(?:\\.[^\x60\\]*)*\x60
// 特に強調表示2、コメント(行頭、またインデントされたコメントのみ)。
// 間違えると困るところ。
83,^ *#(?!{).*
99,else if
99,elseif
// 注1
// qq!Hello\n! でなく, qq{Hello\n} などは、
// 19,\bq(?:q|x|w)?\x7b[^\x7d\\]*(?:\\.[^\x7d\\]*)*\x7d
// require 'jcode.pl';
// $str = qq{<font size="+1">ここの \} はエスケープ</font>\n};
// print jcode::sjis($str);
// 注2
// 「コメント/文字定数のカラー表示」を OFFにすると
// 「対応するカッコ」関連がコメント/文字定数を考慮しなくなる。

●サンプル。
$ret = qx/dir "C:\\Program Files\\Hidemaru" \/a-d\/on\/b/; #わざと見にくい。
# $ret = `dir "C:\\Program Files\\Hidemaru" /a-d/on/b`;
# $ret = qx!dir "C:\\Program Files\\Hidemaru" /a-d/on/b!;
print $ret;
print "-- string --\n";
@a =(q/string/, q/str\/str/,'string', 'str\'ing');
@b =(qq/string/, qq/str\/str/, "string", "str\"ing");
print join("\n", @a), "\n";
print join("\n", @b), "\n";
print "-- regexp --\n";
"foo'bar" =~ /\w+\x27\w+/;
print $&, "\n";
$str = "reGULAR Expression";
$str =~ s/[a-z]+/uc($&)/eg;
print $str, "\n";
__END__
では。

[ ]