2

Data::Sectionを見つけて、興味を持ちました。残念ながら、package Letter::Resignationそのページの例を実行することはできません。

Data::Section の実例はありますか?

4

1 に答える 1

2

さて、ネット上でそれほど自明ではない検索を行った後、私は最終的にネット上でここで読むことができる1つの(そしておそらく唯一の)例を見つけることができました:

最後に、Data::Section の設定方法を説明しました。秘訣は、常にパッケージ名の参照が必要なことです。そして最後に、セクション内の変数を展開するには、テキスト文字列内の変数を展開するにはどうすればよいですか? - perlmonks.orgはとても役に立ちました。

したがって、パッケージ名を使用したくない場合の MWE は次のとおりです。

use strict;
use warnings;
use utf8;
use charnames ':full';

# sudo perl -MCPAN -e shell
# install Data::Section

use Data::Section -setup; 

my $name = "testing \t escapes \n variable";

my $sections = main::->merged_section_data;
for my $filename (keys %$sections) {
  printf "== %s ==\n%s\n", $filename, main::->section_data($filename);
}
my $template = main::->section_data ("test_file");

# expands variables in the template as well!!
$$template =~ s/(\$\w+)/$1/eeg;
die if $@;                  # needed on /ee, not /e

print $$template;



__DATA__

__[ test_file ]__
  \t testing \r escapes \n data::section \t

    Here

  --
  {{ $name }}



__END__

パッケージ名を使用する場合、わずかな違いがあります:

package aPerlTest;

use strict;
use warnings;
use utf8;
use charnames ':full';

# sudo perl -MCPAN -e shell
# install Data::Section

use Data::Section -setup; 

my $name = "testing \t escapes \n variable";

my $sections = aPerlTest::->merged_section_data;
for my $filename (keys %$sections) {
  printf "== %s ==\n%s\n", $filename, aPerlTest::->section_data($filename);
}
my $template = aPerlTest::->section_data ("test_file");

# expands variables in the template as well!!
$$template =~ s/(\$\w+)/$1/eeg;
die if $@;                  # needed on /ee, not /e

print $$template;



__DATA__

__[ test_file ]__
  \t testing \r escapes \n data::section \t

    Here

  --
  {{ $name }}



__END__

どちらの場合も、ターミナル出力は次のとおりです。

$ perl aPerlTest.pl
== test_file ==
SCALAR(0x9f079d0)
  \t testing \r escapes \n data::section \t

    Here

  --
  {{ testing     escapes 
 variable }}

これが誰かに役立つことを願っています - 乾杯!

于 2012-06-08T08:47:33.093 に答える