Perl初级教程 - 第二天


 

 

 

 

第三页:控制结构

Perl支持很多种与C类似的控制结构,但是也与Pascal很相似。下面我们分别对着这些结构进行讨论。

foreach

Perl使用foreach结构对数组或其它列表结构中的每行进行操作:

foreach $morsel (@food)		# Visit each item in turn
				# and call it $morsel
{
	print "$morsel\n";	# Print the item
	print "Yum yum\n";	# That was nice
}

每次的操作过程被包围在花括号内。程序块中的$morsel第一次被赋予@food数组中的第一个值,然后被赋予数组的第二个值,依次类推。如果@food是空的,那么程序块将不会被执行。

判断

判断是检验表达式结果是真是假的一种结构。在Perl中,任何非0数字和非空字符串被看作真。数字0、0字符串和空字符串被看作假。下面是一些基于数字和字符串的判断:

$a == $b		# Is $a numerically equal to $b?
			# Beware: Don't use the = operator.
$a != $b		# Is $a numerically unequal to $b?
$a eq $b		# Is $a string-equal to $b?
$a ne $b		# Is $a string-unequal to $b?

也可以用逻辑与、或、非:

($a && $b)		# Is $a and $b true?
($a || $b)		# Is either $a or $b true?
!($a)			# is $a false?

for

Perl的for结构与C的类似:

for (initialise; test; inc)
{
	 first_action;
	 second_action;
	 etc
}

语句initialise被首先执行,然后当test为真时程序块被执行。程序块每执行一次,inc发生一次。下面是一个循环打印数字0到9的循环:

for ($i = 0; $i < 10; ++$i)	# Start with $i = 1
				# Do it while $i < 10
				# Increment $i before repeating
{
	print "$i\n";
}

while和until

下面是一个从键盘读输入,知道口令正确为止的程序:

#!/usr/local/bin/perl
print "Password? ";		# Ask for input
$a = <STDIN>;			# Get input
chop $a;			# Remove the newline at end
while ($a ne "fred")		# While input is wrong...
{
    print "sorry. Again? ";	# Ask again
    $a = <STDIN>;		# Get input again
    chop $a;			# Chop off newline again
}

当键盘输入与口令不同时花括号内的程序块被执行。while结构很清晰,但有几点要注意:第一,我们可以从标准输入读入信息,而不用打开文件。第二,当口令被输入时,$a被赋予包括换行符在结尾的值。chop函数删除字符串的最后一个字符,这里是换行符。

until也可以执行相同的工作。程序块被反复执行,直到表达式为真。

另一种方式是把while或until放在程序块的后面。这要求do放在程序块的开始处,而判断在结尾处。这样程序可以这样写:

#!/usr/local/bin/perl
do
{
	"Password? ";		# Ask for input
	$a = <STDIN>;		# Get input
	chop $a;		# Chop off newline
}
while ($a ne "fred")		# Redo while wrong input

>>

Perl初级教程
第一页 数组变量
第二页 文件处理
第三页 控制结构

[第1天][第2天][第3天][第4天]

 



本文根据 网猴 相关文章改编,版权归原作者所有。