LFキャラcheckを作りましたが、ほとんど使ってませんでした。
で、先日あるファイルをcheckしたもののアラートは表示されなかったので、そのままRIPに投げたら見事に字詰めが変わってました。LFキャラが使用されてたんです。|||||(;´Д`)|||||
#!/user/local/bin/perl
while(<>){
if(/¥(¥¥012A¥)/){
print"$ARGVにLFキャラが使用されています。¥n";
}
#バックスラッシュは&#165;(半角)に置き換えてます
のどこが間違っていたのか調べてみました。
テストデータはLFキャラ+欧文半角のAで作成。
LFキャラを全角スペースに置き換えたfileをエディタで開き、違いを捜したところLFキャラが使用されていたfileには(¥012A)が使用されていたのです。まぁ、それで(¥012A)=LFキャラとしてしまったのですが、LFキャラ+全角文字ですと(¥012)となります。はぁ~、、、検証不足でした。
で、(¥012)で検索してしまいますとLFキャラ+ASCII文字が漏れてしまうので、
while(<>){に直しました。
if(/¥(¥¥012/){
print"$ARGVにLFキャラが使用されています。¥n";
}
で、ついでにオーバープリントのcheckもしようと調べました。
あぷらいとさんのaiデータ解析のページを参照。
塗りのオーバープリは「1 O」、線のオーバープリは「1 R」となってますので
while(<>){
if(/^1 O$/){
print"オーバープリが使用されています。¥n";
}
にしたら反応しません(^^;A
半角スペースは¥sで表記するのでした。
ついでに^は行頭、$は行末のPerl表記です。
塗りのオーバープリのあるfileをエディタで開くと「1 O」のみの行が必ずあります。
で、まとめたScriptがこれ↓
#!/user/local/bin/perl
while(<>){
if(/¥(¥¥012/){
print"$ARGVにLFキャラが使用されています。¥n";
}
if(/^1¥sO$/){
print"$ARGVに塗りのオーバープリが使用されています。¥n";
}
if(/^1¥sR$/){
print"$ARGVに線のオーバープリが使用されています。¥n";
}
}
こんなド初歩のことに気付かないなんて、道は遠すぎます。・゚・(つД`)・゚・。

1 件のコメント:
#!/user/local/bin/perl
while(<>){
s/^1\sO$\n0\s0\s0\s1\sK//g;
s/^1\sR$\n0\s0\s0\s1\sK//g;
if(/\(\\012/){
print"$ARGVにLFキャラが使用されています。\n";
}
if(/^1\sO$/){
print"$ARGVにオーバープリが使用されています。\n";
}
if(/^1\sR$/){
print"$ARGVにオーバープリが使用されています。\n";
}
}
にしたのだが上手くいかない。
コメントを投稿