Perl Template :: Declare modulはPerl言語構文に関してどのように機能しますか?

jackthehipster

プレフィックス、名前空間、スキーマ検証、ドキュメント内部で参照される要素ID、混合名前空間の属性を使用して、非常に複雑なXMLドキュメント(METS)を作成する必要があります... XMLで実行できるほとんどすべてのこと。また、ネストされた要素が大量にあるため、開始タグと終了タグを手動で追跡することは困難です。

私が出くわしたことを行うためのいくつかの可能性を研究していますTemplate::Declare

概要は、私は参考のためにここに示した例を提供します。

template simple => sub {
        html {
            head {}
            body {
                p { 'Hello, world wide web!' }
            }
        }
    };

私の質問は、Perl言語要素に関してここで何が起こっているのかということです。これはどのように有効なPerl構文に変換されますか?たとえば、ここでPerlコンパイラを表す「html」、「head」キーワードなどは何ですか?それは暗黙のサブ宣言ですか?Perlは暗黙のうちに非常に多くのことを実行します(または実行できるようにします)ので、実際に何が起こっているのかわかりません。いくつかの例をコピーして貼り付けるだけではなく、必要なことを実行するために曲げることができることを願っています。実際に自分が何をしているのか知りたいのですが...

誰かがここで私を啓発できますか?

ジンバブケ

CPANの優れている点は、コードを見るだけでよいことです。これは私が認める少し複雑ですが、これがあなたが探しているものです:

https://metacpan.org/source/ALEXMV/Template-Declare-0.46/lib/Template/Declare/Tags.pm#L525

基本的に、甘い構文はプロトタイプ から来ており&、サブがコード参照を受け入れていることをPerlに伝えます。{ ... }ここでハッシュ、彼らはブロックされ、中のものと同じではありませんmapgrepあなたの例では、それらは一緒にチェーンされています。

プロトタイプのため、括弧とコンマを省略できますが、次のような例を書くこともできます。

template simple => sub {
  html(
    sub {
      head(
        sub { },
        body(
          sub {
            p( sub { 'Hello, world wide web!' } );
          } ) );
    } );
};

これを実装する方法は、直接書き出す場合、次のようになります。

sub template(%) { ... } # the % tells it to expect a hash
sub html(&) { ... }
sub head(&) { ... }
sub body(&) { ... }
sub p(&) { ... }

この種のものは、シンタックスシュガーまたはDSL(ドメイン固有言語)と呼ばれます。

何をしているのかがわかっている場合にのみ、コードでプロトタイプを使用する必要があることに注意してくださいたぶん、あなたはそれらを望まないでしょう。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

How does the Perl Template::Declare modul work in terms of Perl language syntax?

分類Dev

Declare multiple variables on one line in perl

分類Dev

Perlのどの機能がPerlを関数型プログラミング言語にしますか?

分類Dev

Perlでの参照はどのように機能しますか

分類Dev

Perl exp_continue関数はどのように機能しますか?

分類Dev

\ 1はperl正規表現でどのように機能しますか?

分類Dev

Get the number of elements for a Perl pack/unpack template

分類Dev

このPerlシバンはどのように機能しますか?(Perlから来ていない人のために)

分類Dev

UNIVERSALの「ROLE」の定義は何ですか?Perlロールはどのように機能しますか?

分類Dev

Perlでの-sの意味は何ですか?それはどのように機能しますか?

分類Dev

Perlは引用符で囲まれていない裸の単語をどのように解析しますか?

分類Dev

直列の複数の矢印演算子はPerlでどのように機能しますか?

分類Dev

Perl 6では要素メンバーシップはどのように機能しますか?

分類Dev

「\ b」という単語の境界は、perlの出力にどのように影響しますか?

分類Dev

設定ファイルの言語としてPerlを使用するにはどうすればよいですか?

分類Dev

Perl MooseX :: Declareとメソッド属性MooseX :: MethodAttributes

分類Dev

Perl正規表現:perlの複数の単語をどのように照合しますか?

分類Dev

Perl 5-このスクリプトはどのように機能し、@ _と$ _とは何ですか?

分類Dev

Template in union member - Declaration does not declare anything

分類Dev

how to declare member function using template? (not template class)

分類Dev

このperlサブ関数はどのように何かを返しますか?

分類Dev

Perlで文の単語を逆にするにはどうすればよいですか?

分類Dev

Perl 6のセット操作はどのように要素を比較しますか?

分類Dev

Perlはシバンラインをどのように処理しますか?

分類Dev

perl: `$1` はループ内でどのように動作しますか?

分類Dev

Perlでソート機能をうまく機能させるにはどうすればよいですか?

分類Dev

Perlの一致変数とパフォーマンス。それはどのように機能しますか?

分類Dev

関数を引数としてPerlの別の関数に渡して、それを呼び出すにはどうすればよいですか?

分類Dev

linq Expression <TDelegate>の割り当ては言語構文レベルでどのように機能しますか

Related 関連記事

  1. 1

    How does the Perl Template::Declare modul work in terms of Perl language syntax?

  2. 2

    Declare multiple variables on one line in perl

  3. 3

    Perlのどの機能がPerlを関数型プログラミング言語にしますか?

  4. 4

    Perlでの参照はどのように機能しますか

  5. 5

    Perl exp_continue関数はどのように機能しますか?

  6. 6

    \ 1はperl正規表現でどのように機能しますか?

  7. 7

    Get the number of elements for a Perl pack/unpack template

  8. 8

    このPerlシバンはどのように機能しますか?(Perlから来ていない人のために)

  9. 9

    UNIVERSALの「ROLE」の定義は何ですか?Perlロールはどのように機能しますか?

  10. 10

    Perlでの-sの意味は何ですか?それはどのように機能しますか?

  11. 11

    Perlは引用符で囲まれていない裸の単語をどのように解析しますか?

  12. 12

    直列の複数の矢印演算子はPerlでどのように機能しますか?

  13. 13

    Perl 6では要素メンバーシップはどのように機能しますか?

  14. 14

    「\ b」という単語の境界は、perlの出力にどのように影響しますか?

  15. 15

    設定ファイルの言語としてPerlを使用するにはどうすればよいですか?

  16. 16

    Perl MooseX :: Declareとメソッド属性MooseX :: MethodAttributes

  17. 17

    Perl正規表現:perlの複数の単語をどのように照合しますか?

  18. 18

    Perl 5-このスクリプトはどのように機能し、@ _と$ _とは何ですか?

  19. 19

    Template in union member - Declaration does not declare anything

  20. 20

    how to declare member function using template? (not template class)

  21. 21

    このperlサブ関数はどのように何かを返しますか?

  22. 22

    Perlで文の単語を逆にするにはどうすればよいですか?

  23. 23

    Perl 6のセット操作はどのように要素を比較しますか?

  24. 24

    Perlはシバンラインをどのように処理しますか?

  25. 25

    perl: `$1` はループ内でどのように動作しますか?

  26. 26

    Perlでソート機能をうまく機能させるにはどうすればよいですか?

  27. 27

    Perlの一致変数とパフォーマンス。それはどのように機能しますか?

  28. 28

    関数を引数としてPerlの別の関数に渡して、それを呼び出すにはどうすればよいですか?

  29. 29

    linq Expression <TDelegate>の割り当ては言語構文レベルでどのように機能しますか

ホットタグ

アーカイブ