??字符串数组元素赋值:@tmp=qw(aaa bbb kkk 9000);相当于@tmp= (“aaa”,“bbb”,“kkk”,“9000);
????字符串比较,绝不能用==??,要用eq
[macg@localhost perltest]$ vi tip.pl
#!/usr/bin/perl print"input:"; while(chomp($input=<>)) { print"your input is $input n"; if ($input=="q") { print "choose q n";last;} ??elsif ($input=='n') {print "input is $input n";next;} ??????else { print "input ok,try againn";} print "input:"; ??}
|
[macg@localhost perltest]$ ./tip.pl input:x your input is x choose q
|
????字符串用==是最常犯的错误
????即使是整形,也尽量用eq,少用==
while(chomp($input=<STDIN>)) ?{ ?for($i=1,$found=0;$i<=$int_num;$i++) ??{ ???if ($input==$i) { $found=1;} ?????????else
|
Do you want to change eth0:2 's ip address ??回车
Argument "" isn't numeric in numeric eq (==) at ./address.pl line 77,<STDIN> line 2. 对整形变量$input==$i,如果$input是回车,并不走else,而是报错
|
???正确的做法是:????不论整形字符串,都用eq while(chomp($input=<STDIN>)) ?{ ?for($i=1,$found=0;$i<=$int_num;$i++) ??{ ???if ($input eq $i) { $found=1;} ??} which interface you want to config ? choice a number 1 2 3 4 q:1 Do you want to change eth0 's ip address ?
????字符串几种连接运算符 ????,运算符,常用于输出 print?"?金 ",$v1; print?$str,"nn";
????.运算符?????和,类似 也是字符串相加??但,通常只用于print 而.可以用在任何字符串相加的地方 print '12345 大家?跳舞' . " hello world"; ?果?成: 12345 大家?跳舞 hello world
???x运算符号 print "OK" x 4; ?果?成: OKOKOKOK
????为什么字符串相加只能用.??不能用+ 因为可能+就是真加了(数字相加),而不是字符串合并
$v1 = 99; $v2 = '121';
print $v1 + $v2;
|
$v1 = 99; $v2 = '121';
print $v2 . $v1; |
220
|
12199 |
? ????字符串的连接可以连接整形和字符形,整形也被当作字符型处理,没有printf里的%d问题
$min=1;
$date="date "."0".$min; print $date,"n"; ?
|
[root@ntracker mac]# ./tip.pl date 01
|
???uc????成大?,lc?成小?
$str="abCD99e"; $str = uc($str);
|
$str="abCD99e"; $str = lc($str); |
[macg@localhost perltest]$ ./tip.pl ABCD99E????
|
[macg@localhost perltest]$ ./tip.pl abcd99e
|
?????? ?????length取串长(字符数量)
#!/usr/bin/perl $str="abCD99e"; $strlen=length($str); print $strlen,"n";
|
[macg@localhost perltest]$ ./tip.pl 7
|
?? ???substr??串,位置,长度??????-------??取子串,注意从0开始数位置
#!/usr/bin/perl $str = "ABCDEFG1234567"; $a = substr $str,5; print $a,sans-serif; line-height: 18px; ">[macg@localhost perltest]$ ./tip.pl ABCDE??
|
$a = substr $str,?-4,2;? ????????????????从倒数第4个开始,取两个字符
|
[macg@localhost perltest]$ ./tip.pl 45
|
??index?????????在字串中找?某一子字串的起始位置
#!/usr/bin/perl $str = "ABCDEFG1234567"; $a = "12";????????????? $pos=index($str,$a); print $pos,"n";
|
[macg@localhost perltest]$ ./tip.pl 7
|
?? ????@数组=split (pattern,串)??????????将字符串用某模式分成多个单词
#!/usr/bin/perl $str = "ABCDEi FG12i 345 6 7"; @array=split(/ /,$str);按空格分 foreach (@array) { ?????print $_,"n"; }???
|
[macg@localhost perltest]$ ./tip.pl ABCDEi FG12i 345 6 7
|
@array = split (/ +/,$line);????当一行中各单词间的空格多于一个时
???空格和TAB混杂情况下的 split
[macg@localhost perltest]$ vi tip.pl
#!/usr/bin/perl $str = "ABCDEi FG12i?????345 6 7"; @array=split(/t /,$str); foreach (@array) { ?????print $_,"n"; }
|
[macg@localhost perltest]$ ./tip.pl ABCDEi FG12i 345 6 7
|
只分了两份,为什么? 因为同时满足TAB和空格的只有一处 所以必须加[ ]
@array=split(/[t?]/,$str);?????现在才是真正的按空格和TAB分
|
[macg@localhost perltest]$ ./tip.pl ABCDEi FG12i
345 6 7
|
但还是有缺陷,TAB和空格相连时,TAB被认为是空格划分的子串,或者空格被认为是TAB划分的子串
???用join定义字符串数组格式符号(缺省是,)??必须与qw( )合用 语法:join($string,@array)
@array=qw(one two three);
|
$total="one,two,three";
|
@array=qw(one two three); $total=join(":",@array);?
|
$total="one:two:three"; |
????数组内grep
@array=("one","on","in"); $count =grep(/on/,@array); 查询结果赋值给单变量
|
@result=grep(/on/,@array); 查询结果赋值给数组
|
2
|
oneon |
?
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|