📄 perl4.htm
字号:
."[0]"。<br>
"$\{var}"则取消了大括号的变量替换功能,包含文字:${var}.<br>
<a name=3、列表范围:>3、列表范围:</a><br>
(1..10) = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)<br>
(2, 5..7, 11) = (2, 5, 6, 7, 11)<br>
(3..3) = (3)<br>
.用于实数<br>
(2.1..5.3) = (2.1, 3.1 ,4.1, 5.1)<br>
(4.5..1.6) = ()<br>
.用于字符串<br>
("aaa".."aad") = ("aaa","aab",
"aac", "aad")<br>
@day_of_month = ("01".."31")<br>
.可包含变量或表达式<br>
($var1..$var2+5)<br>
.小技巧:<br>
$fred = "Fred";<br>
print (("Hello, " . $fred . "!\n")
x 2);<br>
其结果为:<br>
Hello, Fred!<br>
Hello, Fred!<br>
<a name=4、数组的输出:>4、数组的输出:</a><br>
(1) @array = (1, 2, 3);<br>
print (@array, "\n");<br>
结果为:<br>
123<br>
(2) @array = (1, 2, 3);<br>
print ("@array\n");<br>
结果为:<br>
1 2 3<br>
<a name=5、列表/数组的长度>5、列表/数组的长度</a><br>
当数组变量出现在预期简单变量出现的地方,则PERL解释器取其长度。<br>
@array = (1, 2, 3);<br>
$scalar = @array; # $scalar = 3,即@array的长度<br>
($scalar) = @array; # $scalar = 1,即@array第一个元素的值<br>
注:以数组的长度为循环次数可如下编程:<br>
$count = 1;<br>
while ($count <= @array) {<br>
print ("element $count: $array[$count-1]\n");<br>
$count++;<br>
}<br>
<a name=6、子数组>6、子数组</a><br>
@array = (1, 2, 3, 4, 5);<br>
@subarray = @array[0,1]; # @subarray = (1,
2)<br>
@subarray2 = @array[1..3]; # @subarray2 =
(2,3,4)<br>
@array[0,1] = ("string", 46); #
@array =("string",46,3,4,5) now<br>
@array[0..3] = (11, 22, 33, 44); # @array
= (11,22,33,44,5) now<br>
@array[1,2,3] = @array[3,2,4]; # @array =
(11,44,33,5,5) now<br>
@array[0..2] = @array[3,4]; # @array = (5,5,"",5,5)
now<br>
可以用子数组形式来交换元素:<br>
@array[1,2] = @array[2,1];<br>
<a name=7、有关数组的库函数>7、有关数组的库函数</a><br>
(1)sort--按字符顺序排序<br>
@array = ("this", "is",
"a","test");<br>
@array2 = sort(@array); # @array2 = ("a","is",
"test", "this")<br>
@array = (70, 100, 8);<br>
@array = sort(@array); # @array = (100, 70,
8) now<br>
<font color="red">内置的sort函数是以ASCII码顺序为列表排序,事实上,perl提供的sort用途非常广泛,可用任何自定义的方式对数据排序。
<br>
为了加快执行速度,我们用$a、$b这两个全局变量($a、$b原来的值会被存起来,不必担心)进行比较。如果$a小于$b、应返回任何负整数;相等返回0;大干返回正整数。注意、这里所谓的“小于”是依据函数的定义,可能是数值比较,或是看字符串的第二个字符。规则完全没有限制。<br>
下面的函数会进行数值比较: <br>
sub by_number { <br>
if($a<$b) { <br>
return 1; <br>
}elsif($a==$b) {<br>
return 0; <br>
}elsif($a>$b) { <br>
return -1; <br>
}<br>
}<br>
试看排序以下列表: <br>
@somelist=(1,2,4,8,16,32,64,128,256);<br>
如果用原来的 sort函数排序,会得到按ASCII码顺序当作字符串的排序结果: <br>
@wronglist = sort @somelist;<br>
#@wronglist is now (1,128,16,2,256,32,4,64,8)<br>
这当然不是数字顺序。好吧,我们给sort自定义排序函数,自定义函数的名称必须紧跟sort关键字,像这样: <br>
@rightlist= sort by_number @somelist;<br>
@rightlist is now (1,2,4,8,16,32,64,128,256) <br>
看吧,这样念起来就是“sort by number”,多自然啊:这就为什么建议排序函数用“by_”字样开头的原因。</font> <br>
( 2)reverse--反转数组<br>
@array2 = reverse(@array);<br>
@array2 = reverse sort (@array);<br>
(3)chop--数组去尾 <font color="red">----->see also chomp</font><br>
chop的意义是去掉STDIN(键盘)输入字符串时最后一个字符--换行符。而如果它作用到数组上,则将数组中每一个元素都做如此处理。<br>
@list = ("rabbit", "12345","quartz");<br>
chop (@list); # @list = ("rabbi",
"1234","quart") now<br>
( 4)join/split--连接/拆分<br>
join的第一个参数是连接所用的中间字符,其余则为待连接的字符数组。<br>
$string = join(" ", "this",
"is","a", "string"); # 结果为"this
is a string"<br>
@list = ("words","and");<br>
$string = join("::", @list, "colons");
#结果为"words::and::colons"<br>
@array = split(/::/,$string); # @array = ("words","and",
"colons") now<br>
<p></p>
<p align=center><a href=perl3.htm>上一章</a> <a href=perl5.htm>下一章</a>
<a href=index.htm>目录</a></p>
<br>
<!-- #EndEditable --></td>
</tr>
</table>
</td></tr></table></body><!-- #EndTemplate --></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -