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 尝试了两种不同的方法,使文件成为带有 print 语句的 perlscript,而只是一个 HTML 文件

一个

#!/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 

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

如果您正在寻找成熟稳定的模板系统,请查看大量可用的 CPAN 模块,例如Mason

如果你是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 回答