1.Perl数组(1):

**1. chop和chomp函数

1) 初始化数组 @array = ( “stringA” , “stringB” , “stringC” );
2) 使用负索引循环检索 print $array[-1];  #输出索引为(-1 + 3) % 3 = 2
的 stringC
3) 动态增长 $array[4] = “stringD”;
#虽然$array[3]还没有使用,但在动态赋值$array[4]的使用,已经对$array[3]赋空置
4) 动态增长后的负索引 print $array[-1]; #输出索引为(-1 + 5) % 5 = 4
的 stringD
5) print @array; #输出数组中所有值的无空格串接
6) print “@array”; #输出数组中所有值的空格分隔列表

** 两个函数都以字符串作为参数,并去除其末尾最后一个字符。区别是,无论最后一个字符是什么,chop都会去除,并在返回值中返回;而仅当字符串最后一个字符与特殊变量$/保存的字符一样时,chomp才会将其去除。默认情况下$/保存换行字符,当然可以重设。
  1)如果函数参数是一个字符串数组,那么函数会分别对数组中的每个元素调用。
  2)如果函数参数是一个符合列表(即列表中还有其他列表或HASH表),则可以认为保存在参数列表中的是每个复合容器的地址(指针),而此时chop会将地址作为一个字符串处理,从而破坏整个复合列表。
  顺带一提,如果一个变量是保存数值类型,而非字符串,该函数会把变量保存的数值解释成字符串。

美高梅电子游戏 ,2.Perl数组(2):

**2. getc函数

1) 数组中可以保存不同类型的数据(字符串、数值、数组)
2) $size = @array;
该语句把数组@array的数组长度值给标量$size,但如果在某些函数中直接使用@array,将不一定能得到数组长度
3) $#arrayname,该特殊变量保存着名为arrayname的数组的末尾索引值。
例如:  @arr = ( 1,2,3,4,5 );
则$#arr的值为4
$#arr=2;  这样就把数组arr截断,其元素4和5都被释放,数组长度值也被改变
4) @array[-1,4,7]
将分别输出索引值为-1,4,7的元素,这样的调用返回值不是标量,而是数组
5) 多维数组使用多层方括号定义
@D3array = (
[ [1,2,3,4] , [5,6,7] , [8,9,0] ],
[ [ ‘str1’ , ‘str2’ , ‘str3’ ] , [345 , 67 , 8930] ],
[ [ 4,6,7] , [2] , [ “sud” ] ]
);

** getc函数的参数只有一个,就是文件句柄,如果要从标准输入流读入,就使用STDIN。该函数返回读取的字节,要注意的是,如果读取的是文件流,则在EOF处函数返回空字符串,即”;如果读取标准输入流,则会一直阻塞。

多维数组中每维的数组长度不需要一致,内部数据元素也不需要一致。
获取第一维的数组长度方式是 $size = @array;
第二维         $size = @{$array[$i]};
第三维         $size = @{$array[$i][$j]};
…….         ……
关键是,只要@符号后跟一个数组变量时,就可以获取其长度,但超过一维时,获取数组变量的表达式要用{}包住

**3.拼接字符串

3.命令行执行Perl语句

** 使用join函数可以拼接各个字符串,签名为join(delmiter,
list)。其中delimiter是一个分隔字符串,在拼接结果中各个分离字符串以该delimiter分隔;list则是各个分离的字符串,也可以是一个保存着若干字符串的数组。

1)perl -e ‘命令语句’  
这样可以直接在命令行执行Perl语句,不过要注意引号匹配规则。
2)perl -ne ‘命令语句’ 
filename 这样可以逐行读入filename中的数据,然后对每行都以命令语句处理。
例如 a) perl -ne ‘print;’  abc.txt
在命令行界面逐行输出abc.txt文件的数据
b) perl -ne ‘print if /^192/ ‘ /etc/hosts > ~/hosts.tmp
把UNIX
like系统中主机解释文件的内容逐条写到~/hosts.tmp文件下,不过只有符合以192开头的行,才会被写入,因为语句会执行筛选

复制代码 代码如下:

3)’OS命令’ | perl -ne ‘命令语句’ 
这样可以把之前执行的OS命令的输出作为输入流,重定向到后面执行的perl命令中。
例如 a) ls -al | perl -ne ‘print;’
把当前目录下所有子文件、子目录列出,并作为输入数据输入到perl命令中,再逐条打印

  $str1 = “stringA” ;  $str2 = “stringB”;
  $combine = join ‘::’ , $str1 , $str2 ; 
#$combine值为::stringA::stringB
  @list1 = ( $str1 , $str2 );  @list2 = qw ( stringC  stringD );
  $combine = join ‘_’ , @list1 , @list2 , $str1 ; 
#$combine值为_stringA_stringB_stringC_stringD_stringA

4.Perl引号规则

分隔符使用”\n”时,就可以拼接成垂直列表了。

1)双引号中的内容允许转义和变量解析,缩写是qq/内容/
澳门大赌坊,www.2959.com,新萄京娱乐场.2959.com ,2)单引号中的任何字符都不会被转义和变量不会被解析,缩写是q/内容/
3)反引号中的内容如果出现OS命令,该命令会被执行,并且结果数组会替换命令位置,或作为赋值的数据,缩写是qx/内容/
4)上述缩写中,符号对/内容/可以用其他符号替代,效果相同,例如qq(内容),qx!内容!,q+内容+等等,但字母好像不可以

**4.分割字符串

5.here文档规则

**使用split函数进行字符串分割。
split(delimiter , string , count)
delimiter是分隔符,默认是空格(以tab,空格等进行分割)
string是被分割的字符串,不指定该参数时,对$_进行分割
count允许分割的最大份数,当实际可以分割的份数超过该值时,第count份子串将保存剩余的字符串
函数返回一个数组,里面保存分割的所有字串

1)起始标签没有使用任何引号。对文档内容的效果等同于使用了双引号。
2)起始标签使用了单引号。对文档内容的效果等同于使用了单引号。
3)起始标签使用了反引号。对文档内容的效果等同于使用了反引号。

**5.重复拼接字符串

6.变量初始化

**Perl中的 x
操作符,注意操作数必须左边可解析成字符串,右边可解析成数值。

Perl中的变量在第一次出现时被分配内存。如果没有显式初始化,则会被赋值为0或者空字符串,具体怎样表现要视乎该变量出现的上下文。
使用defined函数,defined $var 可以检查变量是否已经被初始化。
使用undef函数,undef $var 可以释放变量的内容。

复制代码 代码如下:

7.特殊变量

$str1 = “abc”;
$str2 = $str1 x 5;   # $str2的值为 “abcabcabcabcabc”

1)$_, 该变量的值经常作为默认参数值,例如这样调用 print;
不给予任何参数,则会打印出$_的值;当使用文件句柄读入数据时,若不指定使用什么变量保存读入数据,也会读入到$_中。

**6.字串替换

8.Hash 1)Hash表定义语法:
 %aHash = (
  ’key1′  => “value1”,
  ”key2″ => ‘value2’,
    “key3” => 123,
    456 => “890”
) ;

**substr(string, offset, length):
string:原字符串 ,
offset:字串所在原字符串中的起始位置,length:字串长度
该函数有两种用法:
1)获取子串

2)Hash表中的键值可以是数字、字符串、数组甚至另一个hash表,不过如果要采用非字符串键值,则最好以单个键/值对赋值的形式插入到hash表中,而不是在初始化时插入。

复制代码 代码如下:

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章