分类:
2008-12-15 17:17:27
|
要是想以单词为单位,则要在列表环境中使用reverse函数,并且配合split和join函数,如下:
|
1.1.3 讨论
reverse函数在标量上下文或和列表上下文里面分别具有不同的功能。在标量上下文的情况下,它把它的所有参数拼合成一个字符串,然后把这个字符串按字符为单位翻转后返回;而在列表上下文时,它只是把它的所有参数翻转并返回一个翻转后的列表。如果你要用reverse把字符串按字符为单位翻转,除非明显是在标量上下文里面, 否则你得用scalar函数强制声明这是个标量上下文。
|
下面是一个把字符串以单词为单位翻转的例子。在split函数里面,模式使用一个只包含一个空格的字符串是一个特例。因为使用这样的模式的话,split会以连续的空格作为分隔符,而且会舍弃结果中的首部空元素(leading null fields),这点就跟awk一样。一般情况下的话,aplit只会舍弃尾部的空元素(trailing null fields)。
|
我们可以不使用临时数组@allwords而把上面的语句写成一行:
|
原字符串$string 里面的多个连续空格现在在$revwords里面会编程单个空格。如果你想要保留原字符串的空格,这样写:
|
reverse函数的用途之一确定一个单词是否是一个palindrome(正看和反看这个单词都是一样的):
|
我们可以用这样的一行代码来在/usr/dict/words这个文件里面找到一些比较长的palindromes:
% perl -nle 'print if $_ eq reverse && length > 5' /usr/dict/words
deedeed
degged
deified
denned
hallah
kakkak
murdrum
redder
repaper
retter
reviver
rotator
sooloos
tebbet
terret
tut-tut
1.2.4 参考
关于split,reverse,scalor函数的用法可以参考perlfunc(1)和大骆驼书29章,下面一节也有介绍。