2
#!/usr/bin/perl

open FILE, '<', 'evfile';
@file = <FILE>;

$char1 = "123456";
$char2 = "holy cow";

FILE のコードをここに表示して、変数を表示したい

 $char1 and $char2

私は次のことを試しました

#1
{eval @file;}

#2
{print (eval @file);}
#3
{for(@file){
print (eval $_;);
}
}

FILE に対して 2 つの異なることを試しました。ファイルを、print ステートメントと HTML ファイルだけの perlscript にします。

#!/usr/bin/perl
print BBBBXM
<html>
 <head> 
 <title>A Simple Perl CGI</title>
 </head>
 <body>
 <h1>A Simple Perl CGI</h1>  


 <p>$char1   </p>
 <p> $char2 </p> 
</body>
 </html>
BBBBXM 

B

html>
 head> 
 title>A Simple Perl CGI</title>
 /head>
 body>
 h1>A Simple Perl CGI</h1>  


 p>$char1   </p>
 p> $char2 </p> 
/body>
 /html>
4

1 に答える 1

1

成熟した安定したテンプレート システムを探している場合は、Masonなどの利用可能な CPAN モジュールが豊富にあることを確認してください。

あなたがDIYタイプなら:

eval与えられた文字列(配列ではない) を Perl コードとして扱います。明らかに、HTML は Perl としての資格がありません。

ある種の構文など、特定のプレースホルダーを補間するには、次のようにし$nameます。

# hashes are better
my %replacements = (
  char1 => "123456",
  char2 => "holy cow",
);

foreach my $line (@file) {
  $line =~ s{\$(\w+)}{
    exists $replacements{$1}
    ? $replacements{$1}      # substitute, if replacement is defined
    : "$" . $1               # else return the placeholder name
  }ge;                       # /e/xecute replacement
  print $line;
}
于 2012-09-21T02:23:17.957 に答える