|
> PRDX さん今日は、ひろです。
こんにちは。
>> そうなると、マクロのイメージですけど、こんなかんじになるのでしょうか?
> 何が書きたいか解らない(^^;。
ごめんなさい。
> ##Perl も秀丸のマクロも C に文法が似ているので、Perl のならどう書く
>かを書いた方が解りやすいかも。
Perlで書いてみました。
エラー行のマーク処理がPerlにはないので、
代わりにprintするだけになっています。
データのチェックをしたファイルのマークをする作業のかわりです。
#/usr/bin/perl
#エラー文の補足
# 本当はperl -cw をつかって文法チェックをすべきですが、ここではエラーを捕捉
したことにします。
#
# open(PROC,"perl -cw $target 2>&1 |");
# @ERRORS=<PROC>;
# close(PROC);
$ERRORS = <<END_ERROR;
Unquoted string "run" may clash with future reserved word at perl.mac line 1.
String found where operator expected at perl.mac line 1, near "run "perl -cw
\"""
(Do you need to predeclare run?)
Unquoted string "basename" may clash with future reserved word at perl.mac l
ine 1.
Unquoted string "movetolineno" may clash with future reserved word at perl.m
ac line 3.
Number found where operator expected at perl.mac line 3, near "movetolineno 1"
(Do you need to predeclare movetolineno?)
Unquoted string "setmark" may clash with future reserved word at perl.mac li
ne 4.
Bareword found where operator expected at perl.mac line 9, near "//file"
(Missing operator before file?)
syntax error at perl.mac line 1, near "run "perl -cw \"""
syntax error at perl.mac line 9, near "//file name"
perl.mac had compilation errors.
END_ERROR
@ERRORS = split(/\n/,$ERRORS);
#ここまで捕捉作業と同等のことをしようとした
foreach $line (@ERRORS){
エラー行を探し出します+エラー行を抽出します。
$line =~ s/^(.*?)(at )(.*?)( line )(\d+)(.*)$/$3\($5\):$1$2$3$4$5$6/g;
#マーク作業がPerlにはないので、printすることにします
#同じ行がHITしますので、かぶるものを除去する必要があるんですけど、してま
せん。
print "$5\n";
#置換後のメッセージを出すために配列にいったん入れます。
push (@ERROR,$line);
}
#配列に入れた文字を出力します。
foreach(@ERROR){
print "$_\n";
}
exit;
|
|