问题描述
我对 Perl 非常陌生,目前只是按照 YouTube 教程指南 (https://www.youtube.com/watch?v=WEghIXs8F6c) 进行操作。首先,他解释了使用 print 打印变量的语法,然后在视频中大约 8:50,他解释了如何使用另一种称为“say”的打印方法。但是,此时当我尝试完全运行此代码时,我收到以下弹出消息:
世界你好! 不能使用字符串(“curt 位于“123 main st” ") 作为符号 ref 而 "strict refs" 在 Hello_world.pl 第 21 行 (#1) 中使用 (F) "strict refs" 只允许硬引用。象征性的 不允许引用。参见 perlref。 来自用户代码的未捕获异常: 不能使用字符串(“curt 位于“123 main st” ") 作为符号 ref 而在 Hello_world.pl 第 21 行使用“strict refs”。 在 Hello_world.pl 第 21 行 按任意键继续 。 . .
作为序言,这是我目前使用的代码行:
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use feature 'say';
use feature "switch";
use v5.12.3;
print " Hello World!\n";
my $name = 'curt';
my ($age,$street) = (40,'123 main st');
my $my_info = "$name lives on \"$street\"\n";
print $my_info
my $bunch_of_info = <<"END";
This is
a lot of information
for different lines
END
say $bunch_of_info
我感谢所有帮助。非常感谢您提前。
解决方法
你有
print $my_info
my $bunch_of_info = ...;
缺少分号意味着 $my_info
应该是文件句柄。
print $fh ...;
文件句柄可以是对包含文件句柄的 glob 的引用。字符串 123 main st
在技术上是一个有效的引用,除非启用了限制(特别是 strict refs
)。因此,你会得到你得到的错误。
请查看更正后的代码并与您的代码进行比较
#!/usr/bin/env perl
use strict;
use warnings;
use diagnostics;
use feature 'say';
use feature "switch";
use v5.12.3;
print " Hello World!\n";
my $name = 'curt';
my ($age,$street) = (40,'123 main st');
my $my_info = "$name lives on \"$street\"\n";
print $my_info;
my $bunch_of_info = <<"END";
This is
a lot of information
for different lines
END
say $bunch_of_info;
输出
Hello World!
curt lives on "123 main st"
This is
a lot of information
for different lines