簡體   English   中英

Eval將HTML插入運行代碼的Perl CGI腳本中?

[英]Eval insert html into perl cgi-script of running code?

#!/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嘗試了兩種不同的方法,使文件成為帶有打印語句的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>

如果您正在尋找一個成熟而穩定的模板系統,請看一下可用的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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM