Perl中的Textarea标记
我想用perl做一个textarea/textbox。我有这个标记,但它是作为语法错误出现的Perl中的Textarea标记,perl,Perl,我想用perl做一个textarea/textbox。我有这个标记,但它是作为语法错误出现的 <textarea name="answer" rows="20" cols="70"></textarea> 我不知道为什么会出现,我的代码是: #!/usr/bin/perl use strict; use warnings; use CGI; use CGI::Carp qw(fatalsToBrowser); use constant debug=>0; p
<textarea name="answer" rows="20" cols="70"></textarea>
我不知道为什么会出现,我的代码是:
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use constant debug=>0;
print "Content-type: text/html\n\n";
# Program: assignment 3
# Author: Jay
# Date: 02/2014
my $cgi= CGI->new();
my $a=$cgi->param('action');
my $num1=$cgi->param('num1');
my $num2=$cgi->param('num2');
my $num3=$cgi->param('num3');
my $num4=$cgi->param('num4');
my $hard=$cgi->param('hardware');
my $soft=$cgi->param('software');
print "$a, $num1, $num2, $num3, $num4" if debug;
if ($a eq undef) {
print "
<!DOCTYPE html>
<html>
<head>
<title>Error Logging</title>
</head>
<body>
<h1>Error Log - IT Support</h1>
<form method=\"post\" action=/~it.jasonc/cgi-bin/assignment3.pl>
<input type=\"hidden\" name=\"action\" value=\"error\">
<table>
<tr><td>Site:</td><td><input type=\"text\" name=\"site\"></td></tr>
<tr><td>Type of Error:</td>
<td><select name=\"error\">
<option value=\"1\">Hardware</option>
<option value=\"2\">Software</option></select></td></tr>
<textarea name="answer" rows="20" cols="70"></textarea>
<tr><td colspan=\"2\"><input type=\"submit\" value=\"Submit Error\"></td></tr>
</table>
</form>
</body>
</html> "
}
if ($hard) {
print "Go to room 1";
}
if ($soft) {
print "Go to room 2";
}
#/usr/bin/perl
严格使用;
使用警告;
使用CGI;
使用CGI::Carp qw(fatalsToBrowser);
使用常量debug=>0;
打印“内容类型:text/html\n\n”;
#课程:作业3
#作者:周杰伦
#日期:2014年2月
my$cgi=cgi->new();
my$a=$cgi->param('action');
我的$num1=$cgi->param('num1');
我的$num2=$cgi->param('num2');
我的$num3=$cgi->param('num3');
my$num4=$cgi->param('num4');
my$hard=$cgi->param('hardware');
my$soft=$cgi->param(“软件”);
如果调试,则打印“$a、$num1、$num2、$num3、$num4”;
如果($a eq未定义){
“打印”
错误记录
错误日志-IT支持
地点:
错误类型:
硬件
软件
"
}
如果($hard){
打印“前往1号房间”;
}
如果($soft){
打印“去2号房间”;
}
我以另一种类型为例
<textarea type=\"text\" name=\"details\" value\rows="4" cols="50">
Please explain the error here!
</textarea>
请在这里解释错误!
请帮忙
Jay如果使用双引号
“
字符引用字符串,则必须转义其中的所有双引号。您已转义了部分,但不是全部:
...
<option value=\"2\">Software</option></select></td></tr>
<textarea name="answer" rows="20" cols="70"></textarea>
# ^ ^ ^ ^ ^ ^
您还可以使用以下代码:
print <<EOF;
<!DOCTYPE html>
....
EOF
print如果使用双引号“
字符引用字符串,则必须转义其中的所有双引号。你逃脱了一些,但不是全部:
...
<option value=\"2\">Software</option></select></td></tr>
<textarea name="answer" rows="20" cols="70"></textarea>
# ^ ^ ^ ^ ^ ^
您还可以使用以下代码:
print <<EOF;
<!DOCTYPE html>
....
EOF
print行
位于一个大的双引号字符串中。如果在字符串(一个大的多行字符串)内加双引号,则必须在其前面加反斜杠来转义。它在代码中的任何地方都可以完成,除了代码中断的地方,那里有6个未替换的双引号
由于以下文本是HTML而不是perl,因此可能会出现语法错误
如果你不想太在意引用双引号(总是很容易忘记一些),当然还有另一种方法(实际上不止一种)
例如,您可以使用qq{}
代替perl字符串的双引号。如果引号被转义或未转义,则代码将正常工作。没什么特别的,它是完全标准的perl
在下面的一些使用示例中,我取消了HTML代码中的一些随机引用(在生产代码中,我可能会取消所有引用,以避免语法噪音)
除此之外,唯一的区别是打印后使用qq{
,并将双引号结束字符串替换为}
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use constant debug=>0;
print "Content-type: text/html\n\n";
# Program: assignment 3
# Author: Jay
# Date: 02/2014
my $cgi= CGI->new();
my $a=$cgi->param('action');
my $num1=$cgi->param('num1');
my $num2=$cgi->param('num2');
my $num3=$cgi->param('num3');
my $num4=$cgi->param('num4');
my $hard=$cgi->param('hardware');
my $soft=$cgi->param('software');
print "$a, $num1, $num2, $num3, $num4" if debug;
if ($a eq undef) {
print qq{
<!DOCTYPE html>
<html>
<head>
<title>Error Logging</title>
</head>
<body>
<h1>Error Log - IT Support</h1>
<form method="post" action=/~it.jasonc/cgi-bin/assignment3.pl>
<input type=\"hidden\" name=\"action\" value=\"error\">
<table>
<tr><td>Site:</td><td><input type=\"text\" name=\"site\"></td></tr>
<tr><td>Type of Error:</td>
<td><select name=\"error\">
<option value=\"1\">Hardware</option>
<option value=\"2\">Software</option></select></td></tr>
<textarea name="answer" rows="20" cols="70"></textarea>
<tr><td colspan=\"2\"><input type=\"submit\" value=\"Submit Error\"></td></tr>
</table>
</form>
</body>
</html>
}
}
if ($hard) {
print "Go to room 1";
}
if ($soft) {
print "Go to room 2";
}
#/usr/bin/perl
严格使用;
使用警告;
使用CGI;
使用CGI::Carp qw(fatalsToBrowser);
使用常量debug=>0;
打印“内容类型:text/html\n\n”;
#课程:作业3
#作者:周杰伦
#日期:2014年2月
my$cgi=cgi->new();
my$a=$cgi->param('action');
我的$num1=$cgi->param('num1');
我的$num2=$cgi->param('num2');
我的$num3=$cgi->param('num3');
my$num4=$cgi->param('num4');
my$hard=$cgi->param('hardware');
my$soft=$cgi->param(“软件”);
如果调试,则打印“$a、$num1、$num2、$num3、$num4”;
如果($a eq未定义){
打印qq{
错误记录
错误日志-IT支持
地点:
错误类型:
硬件
软件
}
}
如果($hard){
打印“前往1号房间”;
}
如果($soft){
打印“去2号房间”;
}
行
位于一个大的双引号字符串中。如果在字符串(一个大的多行字符串)内加双引号,则必须在其前面加反斜杠来转义。它在代码中的任何地方都可以完成,除了代码中断的地方,那里有6个未替换的双引号
由于以下文本是HTML而不是perl,因此可能会出现语法错误
如果你不想太在意引用双引号(总是很容易忘记一些),当然还有另一种方法(实际上不止一种)
例如,您可以使用qq{}
代替perl字符串的双引号。如果引号被转义或未转义,则代码将正常工作。没什么特别的,它是完全标准的perl
在下面的一些使用示例中,我取消了HTML代码中的一些随机引用(在生产代码中,我可能会取消所有引用,以避免语法噪音)
除此之外,唯一的区别是打印后使用qq{
,并将双引号结束字符串替换为}
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use constant debug=>0;
print "Content-type: text/html\n\n";
# Program: assignment 3
# Author: Jay
# Date: 02/2014
my $cgi= CGI->new();
my $a=$cgi->param('action');
my $num1=$cgi->param('num1');
my $num2=$cgi->param('num2');
my $num3=$cgi->param('num3');
my $num4=$cgi->param('num4');
my $hard=$cgi->param('hardware');
my $soft=$cgi->param('software');
print "$a, $num1, $num2, $num3, $num4" if debug;
if ($a eq undef) {
print qq{
<!DOCTYPE html>
<html>
<head>
<title>Error Logging</title>
</head>
<body>
<h1>Error Log - IT Support</h1>
<form method="post" action=/~it.jasonc/cgi-bin/assignment3.pl>
<input type=\"hidden\" name=\"action\" value=\"error\">
<table>
<tr><td>Site:</td><td><input type=\"text\" name=\"site\"></td></tr>
<tr><td>Type of Error:</td>
<td><select name=\"error\">
<option value=\"1\">Hardware</option>
<option value=\"2\">Software</option></select></td></tr>
<textarea name="answer" rows="20" cols="70"></textarea>
<tr><td colspan=\"2\"><input type=\"submit\" value=\"Submit Error\"></td></tr>
</table>
</form>
</body>
</html>
}
}
if ($hard) {
print "Go to room 1";
}
if ($soft) {
print "Go to room 2";
}
#/usr/bin/perl
严格使用;
使用警告;
使用CGI;
使用CGI::Carp qw(fatalsToBrowser);
使用常量debug=>0;
打印“内容类型:text/html\n\n”;
#课程:作业3
#作者:周杰伦
#日期:2014年2月
my$cgi=cgi->new();
my$a=$cgi->param('action');
我的$num1=$cgi->param('num1');
我的$num2=$cgi->param('num2');
我的$num3=$cgi->param('num3');
my$num4=$cgi->param('num4');
my$hard=$cgi->param('hardware');
my$soft=$cgi->param(“软件”);
如果调试,则打印“$a、$num1、$num2、$num3、$num4”;
如果($a eq未定义){
打印qq{
错误记录
错误日志-IT支持
地点:
错误类型:
硬件
软件
}
}
如果($hard){
打印“前往1号房间”;
}
如果($soft){
打印“去2号房间”;
}
您应该始终发布您收到的准确错误,按其显示的完整性,并在代码中标记行号。您应该始终发布您收到的准确错误,按其显示的完整性,并在代码中标记行号。是的,我理解双引号”字符的含义,但我让我的朋友检查了双引号(他是perl方面的专家)他说我已经转义了里面的所有双引号。@t你的朋友错了,这些双引号没有转义。你通过在字符前面加反斜杠来转义字符,所以\“
转义,”
没有。是的,我理解双引号的含义。”字符,但我让我的朋友检查了双引号(他是perl方面的专家),他说我已经转义了其中的所有双引号。@t你的朋友错了,这些双引号没有转义。你通过在字符前面加反斜杠来转义字符,所以\“
转义了,”
没有转义。