
列表与数组
|
69
@betty = ( ); #
这才是清空数组的正确方法
强制指定标量上下文
有时在
Perl
列表上下文的地方我们需要强制引入标量上下文,可以使用伪函
数
scalar
,它不是真正的函数,只用于告诉
Perl
这里要切换到标量上下文:
@rocks = qw( talc quartz jade obsidian );
print "How many rocks do you have?\n";
print "I have ", @rocks, " rocks!\n"; #
错误,这会输出各种石头的名称
print "I have ", scalar @rocks, " rocks!\n"; #
正确,打印出来的是石头种数
说来也怪,
Perl
没有强行引入列表上下文的对应函数。原因很简单,因为你根本用不
到,相信我们。
列表上下文中的
<STDIN>
之前我们看到
<STDIN>
操作符在列表上下文中会返回不同的值。在标量上下文中,
<STDIN>
返回的是输入数据的下一行内容;在列表上下文中,返回的则是所有剩下行
的内容,一行一个元素,直到文件结尾。比如:
@lines = <STDIN>; #
在列表上下文中读取标准输入
当输入数据来自某个文件时,它会读取文件的剩余部分。但如果输入数据的来源是键
盘,应该如何发送文件结尾标记呢?对
Unix
或类似系统(包括
Linux
和
Mac OS X
)
来说,一般是键入
Ctrl+D
来告知系统,不会再有任何输入了。即使这个特殊字符会 ...