我正在观看针对perl的UDEMY培训视频,但视频不清晰,看起来包含错误。
培训展示了如何使用以下示例连接2个字符串:
#!usr/bin/perl
print $str = "Hi";
print $str .= " there\n";
然而,当我运行脚本时,输出是: HiHi那里
第二个Hi来自哪里?我错过了什么吗?
答案 0 :(得分:8)
第一个语句将值“Hi”赋给$ str,然后打印它。第二个语句将值“there \ n”添加到$ str,使$ str等于“Hi there \ n”,然后打印它。因此,您获得的输出对于您告诉口译员要做的事情是正确的。
答案 1 :(得分:7)
如果培训真的显示了这个脚本,就抛弃它 - 这不是人们通常会编写的代码。
$str = "Hi"
将变量$str
设置为字符串"Hi"
。大多数情况下,不使用赋值的值,仅对其副作用执行赋值,即改变变量的值。但是,在Perl中,赋值确实有一个值,即赋给变量的值。指令print $str = "Hi"
打印指定的值,即打印字符串"Hi"
。
第二条说明为$str
分配的值包含$str
与" there\n"
连接的旧值,即$str
设置为"Hi there\n"
。再一次,打印分配的值,即打印字符串"Hi there\n"
。
通常不会使用赋值的值:
#!/usr/bin/env perl
my $str = "Hi";
$str .= " there\n";
print $str;