Home > Perl > Attribute::Handlers と use encoding 'utf8' を併用した際の妖しい挙動

Attribute::Handlers と use encoding 'utf8' を併用した際の妖しい挙動

  • 2005-12-01 (木)
  • Perl
  • このエントリーを含むはてなブックマーク

Attribute::Handlers を利用しているモジュール - Test::Class を使っていて出くわした現象。use encoding を宣言した、下記のようなスクリプトを実行しようとしたらコンパイルエラーになってしまいました:

att.pl

#!/usr/bin/perl
use strict;
use Attribute::Handlers;
use encoding 'utf8';
sub furiously : ATTR(CODE) {
print "handler in work\n";
return;
}
sub bark : furiously { return 1 }
bark();

エラーメッセージ:

$./att.pl
Unterminated attribute parameter in attribute list at ./att.pl line 6, at end of line
syntax error at ./att.pl line 6, at EOF
Execution of ./att.pl aborted due to compilation errors.

解決方法を探ろうとがんばってみたものの、今の自分の知識では無理でした。ただ唯一判った事といえば、shell にてオプション無しで perl を実行 → 上記コードを貼り付け → Ctrl + D で実行した場合はエラーにならなかったのでおそらく

ソースファイル中に混在する制御記号かなんかでひっかかってる

っぽいです。ぽい。すげー自身無いけど(汗)。再現性があるであろうソースファイルをここに置いておきます

回避方法

encoding プラグマの Filter オプションを立てると回避できます:

use encoding 'utf8', Filter=>1;

ただの僕の凡ミスである確立が高いので、こうやって記事にするまでも無いんだけど... 少なくとも回避方法だけは見つけたので、同じような現象で悩んでる誰かしかの役に立てば、と思って書いてみました。

Comments:0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info

Home > Perl > Attribute::Handlers と use encoding 'utf8' を併用した際の妖しい挙動

Search
Feeds

Page Top