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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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 可能是一个失控的多行“&引用;字符串起始_Perl - Fatal编程技术网

Perl 可能是一个失控的多行“&引用;字符串起始

Perl 可能是一个失控的多行“&引用;字符串起始,perl,Perl,HTMLmaker.pl第54行“.if”附近的语法错误 (可能是从第47行开始的失控多行“”字符串) 由于编译错误,HTMLmaker.pl的执行中止 use strict; use warnings; use vars qw( $fc $sc $fontsize ); print "What would you like the title of the website to be? "; chomp (my $TWT = <STDIN>); print "What woul

HTMLmaker.pl第54行“.if”附近的语法错误 (可能是从第47行开始的失控多行“”字符串) 由于编译错误,HTMLmaker.pl的执行中止

 use strict;
use warnings;
use vars qw( $fc $sc $fontsize );

print "What would you like the title of the website to be? ";
chomp (my $TWT = <STDIN>);
print "What would you like as the background colour?
It will be a gradient, enter your top colour ";
chomp (my $firstecolour = <STDIN>);
print "Choose your second colour ";
chomp (my $secondcolour = <STDIN>);
print "How large would you like the text to be, 6 = smallest, 1 = largest ";
chomp (my $size = <STDIN>);
print "What text would you your heading to be? ";
chomp (my $text = <STDIN>);
print "What size would you like your font?";
chomp (my $fontsize = <STDIN>);
print "What font would you like?";
chomp (my $category = <STDIN>);
print "What colour would like your text to be?";
chomp (my $col = <STDIN>);
print "What would you like to put as tour first paragraph?";
chomp (my $txt = <STDIN>);
print "Would you like your text aligned in the center?";
chomp (my $ali = <STDIN>);
if ($firstecolour eq "black") { $fc = "#000000" };
if ($firstecolour eq "red") { $fc = "#FF0000" };
if ($firstecolour eq "green") { $fc = "#00FF00" };
if ($firstecolour eq "blue") { $fc = "#0000FF" };
if ($firstecolour eq "yellow") { $fc = "#FFFF00" };
if ($firstecolour eq "cyan") { $fc = "#00FFFF" };
if ($firstecolour eq "pink") { $fc = "#FF00FF" };
if ($firstecolour eq "grey") { $fc = "#C0C0C0" };
if ($firstecolour eq "white") { $fc = "#FFFFFF" };
if ($secondcolour eq "black") { $sc = "#000000" };
if ($secondcolour eq "red") { $sc = "#FF0000" };
if ($secondcolour eq "green") { $sc = "#00FF00" };
if ($secondcolour eq "blue") { $sc = "#0000FF" };
if ($secondcolour eq "yellow") { $sc = "#FFFF00" };
if ($secondcolour eq "cyan") { $sc = "#00FFFF" };
if ($secondcolour eq "pink") { $sc = "#FF00FF" };
if ($secondcolour eq "grey") { $sc = "#C0C0C0" };
if ($secondcolour eq "white") { $sc = "#FFFFFF" };

my $filename = "./index.htm";
open (LOG, ">>$filename") or die $!;
print LOG "<html>
<title>$TWT</title>
<body style=\"height: 800px; width: 1247px; filter:progid:DXImageTransform.Microsoft.Gradient(endColorstr=\'$sc\', startColorstr=\'$fc\', gradientType=\'0\');\">
<DIV ALIGN=CENTER>
<h$size>$text</h>
</DIV>
<font size=\"$fontsize\" face=\"$category\" color=\"$col\">
". if ($ali eq "yes") { print "<DIV ALIGN=CENTER>"}; ."
<p>$txt</p></font>
". if ($ali eq "yes") { print "</DIV>"}; ."
</body>
</html>";
close (LOG);
<STDIN>;
使用严格;
使用警告;
使用变量qw($fc$sc$fontsize);
打印“您希望网站的标题是什么?”;
chomp(我的$TWT=);
打印“您想要什么作为背景色?”?
这将是一个渐变,输入您的顶部颜色”;
chomp(我的$firstecolour=);
打印“选择第二种颜色”;
chomp(我的$SecondColor=);
打印“您希望文本有多大,6=最小,1=最大”;
chomp(我的$size=);
打印“您希望您的标题是什么文本?”;
chomp(我的$text=);
打印“您想要多大的字体?”;
chomp(我的$fontsize=);
打印“您想要什么字体?”;
chomp(我的$category=);
打印“您希望文本是什么颜色?”;
chomp(我的$col=);
打印“你想把什么作为旅游的第一段?”;
chomp(我的$txt=);
打印“是否希望文本居中对齐?”;
chomp(我的$ali=);
如果($firstecolour eq“black”){$fc=“#000000”};
如果($firstecolour eq“red”){$fc=“#FF0000”};
如果($firstecolour eq“绿色”){$fc=“#00FF00”};
如果($firstecolour eq“蓝色”){$fc=“#0000FF”};
如果($firstecolour eq“黄色”){$fc=“#FFFF00”};
如果($firstecolour eq“青色”){$fc=“#00FFFF”};
如果($firstecolour eq“pink”){$fc=“#FF00FF”};
如果($firstecolour eq“灰色”){$fc=“#c0c0”};
如果($firstecolour eq“白色”){$fc=“#FFFFFF”};
如果($secondcolor eq“black”){$sc=“#000000”};
如果($secondcolor eq“red”){$sc=“#FF0000”};
如果($secondcolor eq“green”){$sc=“#00FF00”};
如果($secondcolor eq“blue”){$sc=“#0000FF”};
如果($secondcolor eq“yellow”){$sc=“#FFFF00”};
如果($secondcolor eq“cyan”){$sc=“#00FFFF”};
如果($secondcolor eq“pink”){$sc=“#FF00FF”};
如果($secondcolor eq“grey”){$sc=“#c0”};
如果($secondcolor eq“white”){$sc=“#FFFFFF”};
my$filename=“./index.htm”;
打开(日志,“>>$filename”)或死亡$!;
“打印日志”
$TWT
$text
“.if($ali eq“yes”){print”“}。"
$txt

“.if($ali eq“yes”){print”“}。" "; 关闭(日志); ;

请问这有什么问题吗?

如果您这样做了,您就不能内联您的

”.if($ali eq“yes”){print“…”};“…”;close(LOG);

==>


您不能像以前那样内联
if
语句。
”。如果($ali eq“yes”){print…}。"…"; 关闭(日志)
==>


如果Perl中的
语句不能成为表达式的一部分,则它是一个独立的构造。如果要将其放在表达式中,则必须将其包装在
do{…}
块中

内联等价物是
COND?EXPR1:EXPR2
构造,它与
do{if(COND){EXPR1}else{EXPR2}
相同

您应该使用
my
声明的词法变量,而不是
use vars
pragma

您的代码还包含大量重复。Perl非常善于让您消除这种情况,从而节省时间、简化重构并减少错误

 use strict;
use warnings;
use vars qw( $fc $sc $fontsize );

print "What would you like the title of the website to be? ";
chomp (my $TWT = <STDIN>);
print "What would you like as the background colour?
It will be a gradient, enter your top colour ";
chomp (my $firstecolour = <STDIN>);
print "Choose your second colour ";
chomp (my $secondcolour = <STDIN>);
print "How large would you like the text to be, 6 = smallest, 1 = largest ";
chomp (my $size = <STDIN>);
print "What text would you your heading to be? ";
chomp (my $text = <STDIN>);
print "What size would you like your font?";
chomp (my $fontsize = <STDIN>);
print "What font would you like?";
chomp (my $category = <STDIN>);
print "What colour would like your text to be?";
chomp (my $col = <STDIN>);
print "What would you like to put as tour first paragraph?";
chomp (my $txt = <STDIN>);
print "Would you like your text aligned in the center?";
chomp (my $ali = <STDIN>);
if ($firstecolour eq "black") { $fc = "#000000" };
if ($firstecolour eq "red") { $fc = "#FF0000" };
if ($firstecolour eq "green") { $fc = "#00FF00" };
if ($firstecolour eq "blue") { $fc = "#0000FF" };
if ($firstecolour eq "yellow") { $fc = "#FFFF00" };
if ($firstecolour eq "cyan") { $fc = "#00FFFF" };
if ($firstecolour eq "pink") { $fc = "#FF00FF" };
if ($firstecolour eq "grey") { $fc = "#C0C0C0" };
if ($firstecolour eq "white") { $fc = "#FFFFFF" };
if ($secondcolour eq "black") { $sc = "#000000" };
if ($secondcolour eq "red") { $sc = "#FF0000" };
if ($secondcolour eq "green") { $sc = "#00FF00" };
if ($secondcolour eq "blue") { $sc = "#0000FF" };
if ($secondcolour eq "yellow") { $sc = "#FFFF00" };
if ($secondcolour eq "cyan") { $sc = "#00FFFF" };
if ($secondcolour eq "pink") { $sc = "#FF00FF" };
if ($secondcolour eq "grey") { $sc = "#C0C0C0" };
if ($secondcolour eq "white") { $sc = "#FFFFFF" };

my $filename = "./index.htm";
open (LOG, ">>$filename") or die $!;
print LOG "<html>
<title>$TWT</title>
<body style=\"height: 800px; width: 1247px; filter:progid:DXImageTransform.Microsoft.Gradient(endColorstr=\'$sc\', startColorstr=\'$fc\', gradientType=\'0\');\">
<DIV ALIGN=CENTER>
<h$size>$text</h>
</DIV>
<font size=\"$fontsize\" face=\"$category\" color=\"$col\">
". if ($ali eq "yes") { print "<DIV ALIGN=CENTER>"}; ."
<p>$txt</p></font>
". if ($ali eq "yes") { print "</DIV>"}; ."
</body>
</html>";
close (LOG);
<STDIN>;
例如,应使用哈希表将颜色名称映射到十六进制代码。类似地,在提示用户之后设置许多变量可以写成循环

下面是一个简短的例子,说明我的意思:

my @questions = (
    [\my $TWT           => "What would you like the title of the website to be? "],
    [\my $firstecolour  => "What would you like as the background colour?\nIt will be a gradient, enter your top colour: "],
    [\my $secondcolour  => "Choose your second colour: "],
);

for (@questions) {
    print $$_[1];
    chomp (${$$_[0]} = <STDIN>)
}

my %colors = do {
    no warnings 'qw';
    qw(
        black   #000000
        red     #FF0000
        green   #00FF00
        blue    #0000FF
        yellow  #FFFF00
        cyan    #00FFFF
        pink    #FF00FF
        grey    #C0C0C0
        white   #FFFFFF
    )
};

for ($firstecolour, $secondcolour) {
    if ($colors{lc $_}) {
        $_ = $colors{lc $_}
    }
}

say for $firstecolour, $secondcolour;
my@questions=(
[\my$TWT=>“您希望网站的标题是什么?”,
[\my$firstecolour=>“您想要什么作为背景色?\n如果是渐变色,请输入您的顶色:”,
[\my$secondcolor=>“选择第二种颜色:”,
);
对于(@问题){
打印$$\u[1];
chomp(${$$\[0]}=)
}
我的%colors=do{
没有“qw”警告;
量子阱(
黑色#000000
红色#FF0000
绿色#00FF00
蓝色#0000FF
黄色#FFFF00
青色#00FFFF
粉红色#FF00FF
灰色#C0C0
白色#FFFFFF
)
};
对于($firstecolour,$SecondColor){
如果($colors{lc$}){
$\=$colors{lc$\}
}
}
比如说$firstecolour,$SecondColor;

如果Perl中的
语句不能成为表达式的一部分,则它是一个独立的构造。如果要将其放在表达式中,则必须将其包装在
do{…}
块中

内联等价物是
COND?EXPR1:EXPR2
构造,它与
do{if(COND){EXPR1}else{EXPR2}
相同

您应该使用
my
声明的词法变量,而不是
use vars
pragma

您的代码还包含大量重复。Perl非常善于让您消除这种情况,从而节省时间、简化重构并减少错误

 use strict;
use warnings;
use vars qw( $fc $sc $fontsize );

print "What would you like the title of the website to be? ";
chomp (my $TWT = <STDIN>);
print "What would you like as the background colour?
It will be a gradient, enter your top colour ";
chomp (my $firstecolour = <STDIN>);
print "Choose your second colour ";
chomp (my $secondcolour = <STDIN>);
print "How large would you like the text to be, 6 = smallest, 1 = largest ";
chomp (my $size = <STDIN>);
print "What text would you your heading to be? ";
chomp (my $text = <STDIN>);
print "What size would you like your font?";
chomp (my $fontsize = <STDIN>);
print "What font would you like?";
chomp (my $category = <STDIN>);
print "What colour would like your text to be?";
chomp (my $col = <STDIN>);
print "What would you like to put as tour first paragraph?";
chomp (my $txt = <STDIN>);
print "Would you like your text aligned in the center?";
chomp (my $ali = <STDIN>);
if ($firstecolour eq "black") { $fc = "#000000" };
if ($firstecolour eq "red") { $fc = "#FF0000" };
if ($firstecolour eq "green") { $fc = "#00FF00" };
if ($firstecolour eq "blue") { $fc = "#0000FF" };
if ($firstecolour eq "yellow") { $fc = "#FFFF00" };
if ($firstecolour eq "cyan") { $fc = "#00FFFF" };
if ($firstecolour eq "pink") { $fc = "#FF00FF" };
if ($firstecolour eq "grey") { $fc = "#C0C0C0" };
if ($firstecolour eq "white") { $fc = "#FFFFFF" };
if ($secondcolour eq "black") { $sc = "#000000" };
if ($secondcolour eq "red") { $sc = "#FF0000" };
if ($secondcolour eq "green") { $sc = "#00FF00" };
if ($secondcolour eq "blue") { $sc = "#0000FF" };
if ($secondcolour eq "yellow") { $sc = "#FFFF00" };
if ($secondcolour eq "cyan") { $sc = "#00FFFF" };
if ($secondcolour eq "pink") { $sc = "#FF00FF" };
if ($secondcolour eq "grey") { $sc = "#C0C0C0" };
if ($secondcolour eq "white") { $sc = "#FFFFFF" };

my $filename = "./index.htm";
open (LOG, ">>$filename") or die $!;
print LOG "<html>
<title>$TWT</title>
<body style=\"height: 800px; width: 1247px; filter:progid:DXImageTransform.Microsoft.Gradient(endColorstr=\'$sc\', startColorstr=\'$fc\', gradientType=\'0\');\">
<DIV ALIGN=CENTER>
<h$size>$text</h>
</DIV>
<font size=\"$fontsize\" face=\"$category\" color=\"$col\">
". if ($ali eq "yes") { print "<DIV ALIGN=CENTER>"}; ."
<p>$txt</p></font>
". if ($ali eq "yes") { print "</DIV>"}; ."
</body>
</html>";
close (LOG);
<STDIN>;
例如,应使用哈希表将颜色名称映射到十六进制代码。类似地,在提示用户之后设置许多变量可以写成循环

下面是一个简短的例子,说明我的意思:

my @questions = (
    [\my $TWT           => "What would you like the title of the website to be? "],
    [\my $firstecolour  => "What would you like as the background colour?\nIt will be a gradient, enter your top colour: "],
    [\my $secondcolour  => "Choose your second colour: "],
);

for (@questions) {
    print $$_[1];
    chomp (${$$_[0]} = <STDIN>)
}

my %colors = do {
    no warnings 'qw';
    qw(
        black   #000000
        red     #FF0000
        green   #00FF00
        blue    #0000FF
        yellow  #FFFF00
        cyan    #00FFFF
        pink    #FF00FF
        grey    #C0C0C0
        white   #FFFFFF
    )
};

for ($firstecolour, $secondcolour) {
    if ($colors{lc $_}) {
        $_ = $colors{lc $_}
    }
}

say for $firstecolour, $secondcolour;
my@questions=(
[\my$TWT=>“您希望网站的标题是什么?”,
[\my$firstecolour=>“您想要什么作为背景色?\n如果是渐变色,请输入您的顶色:”,
[\my$secondcolor=>“选择第二种颜色:”,
);
对于(@问题){
打印$$\u[1];
chomp(${$$\[0]}=)
}
我的%colors=do{
没有“qw”警告;
量子阱(
黑色#000000
红色#FF0000
绿色#00FF00
蓝色#0000FF
黄色#FFFF00
青色#00FFFF
粉红色#FF00FF
灰色#C0C0
白色#FFFFFF
)
};
对于($firstecolour,$SecondColor){
如果($colors{lc$}){
$\=$colors{lc$\}
}
}
比如说$firstecolour,$SecondColor;

> p>在字符串表达式的中间有一个打印指令。这在两个方面是错误的:

  • 在Perl中,您不能
    print LOG <<EOF;
    <html> …
    @{[$ali eq "yes" ? "<DIV ALIGN=CENTER>" : ""]}
    <p>$txt</p></font>
    @{[$ali eq "yes" ? "</DIV>" : ""]}
    … </html>
    EOF
    
    my $ali_start = ($ali eq "yes" ? "<DIV ALIGN=CENTER>\n" : "");
    my $ali_end = ($ali eq "yes" ? "</DIV>\n" : "");
    print LOG <<EOF;
    <html> …
    $ali_start<p>$txt</p></font>$ali_end
    … </html>
    EOF