Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl中的Textarea标记_Perl - Fatal编程技术网

Perl中的Textarea标记

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

我想用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;

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你的朋友错了,这些双引号没有转义。你通过在字符前面加反斜杠来转义字符,所以
\“
转义了,
没有转义。