2

G'day、

電子メールを生成するためのスタンドアロンのテンプレート言語としてHTML::Mason1.35を使用しようとしています。次のテストスクリプトについて考えてみます。

#!/ usr / bin / perl
厳密に使用します。
警告を使用します。

HTML :: Mason::Compilerを使用します。
HTML::Masonを使用します。
Data::Dumperを使用します。

私の$view_info= {
    名前=>'ジョンスミス'、
    dob => '10-10-2010'
};

私の$output;

私の$mason_compiler= HTML :: Mason ::Compiler-> new(
    allow_globals => [qw($ view_info)]
);

私の$mason_interpreter= HTML :: Mason :: Interp-> new(
    コンパイラ=>$mason_compiler、
    comp_root =>'/ tmp /'、
    out_method => \ $ output
);

$ mason_interpreter-> exec('/something.m');

ダンパーを印刷{
    出力=>$output
};

実行しようとすると、次のエラーが発生します。

次のパラメータがへの呼び出しで渡されました
HTML :: Mason ::Compiler :: compileですが、にリストされていませんでした
検証オプション:comp_class

スタック:
  [/usr/share/perl5/HTML/Mason/Compiler.pm:191]
  [/usr/share/perl5/HTML/Mason/ComponentSource.pm:76]
  [/usr/share/perl5/HTML/Mason/Interp.pm:452]
  [/usr/share/perl5/HTML/Mason/Request.pm:239]
  [/usr/share/perl5/HTML/Mason/Request.pm:205]
  [/usr/share/perl5/Class/Container.pm:275]
  [/usr/share/perl5/Class/Container.pm:353]
  [/usr/share/perl5/HTML/Mason/Interp.pm:348]
  [/usr/share/perl5/HTML/Mason/Interp.pm:342]
  [./masontest.pl:26]

コンパイラを使用せず、コンポーネントを解釈するだけで問題なく動作しますが、コンパイラを追加するとこのエラーが発生します。私がここで間違っていることの手がかりはありますか?

4

2 に答える 2

3

別の解決策ですが、説明ではありません。HTML::Mason::Compiler::ToObjectの代わりにコンパイラとして使用してHTML::Mason::Compilerください。現時点でその理由を思い出せませんが、それが私の作業コードにあるものです。

于 2011-09-14T03:45:16.777 に答える
2

(可能な)解決策:

#!/ usr / bin / perl
厳密に使用します。
警告を使用します。

HTML :: Mason::Compilerを使用します。
HTML::Masonを使用します。
Data::Dumperを使用します。

私の$view_info= {
    名前=>'ジョンスミス'、
    dob => '10-10-2010'
};

私の$output;

私の$mason_interpreter= HTML :: Mason :: Interp-> new(
    allow_globals => [qw($ view_info)]、
    comp_root =>'/ tmp /'、
    out_method => \ $ output
);

$ mason_interpreter-> set_global('$ view_info'、$ view_info);
$ mason_interpreter-> exec('/something.m');

ダンパーを印刷{
    出力=>$output
};
于 2011-09-14T04:01:34.967 に答える