[英]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.