Perl字符串基本操作详解

本文和大家重点讨论一下Perl字符串的一些基本操作,比如Perl字符串数组元素赋值:@tmp=qw(aaabbbkkk9000);相当于@tmp=(“aaa”,“bbb”,“kkk”,“9000)。至于其他操作请看本文详细介绍。

创新互联公司专注于长清网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供长清营销型网站建设,长清网站制作、长清网页设计、长清网站官网定制、微信小程序开发服务,打造长清网络公司原创品牌,更为您提供长清网站排名全网营销落地服务。

Perl字符串操作

Perl字符串数组元素赋值:@tmp=qw(aaabbbkkk9000);相当于@tmp=(“aaa”,“bbb”,“kkk”,“9000);

◆Perl字符串比较,绝不能用==,要用eq
[macg@localhostPerltest]$vitip.pl

#!/usr/bin/Perl
print"input:";
while(chomp($input=<>)){
print"yourinputis$input\n";
if($input=="q"){print"chooseq\n";last;}
elsif($input=='n'){print"inputis$input\n";next;}
else{print"inputok,tryagain\n";}
print"input:";
}
[macg@localhostPerltest]$./tip.pl
input:x
yourinputisx
chooseq

◆Perl字符串用==是最常犯的错误

即使是整形,也尽量用eq,少用==
while(chomp($input=))
{
for($i=1,$found=0;$i<=$int_num;$i++)
{
if($input==$i){$found=1;}
else
Doyouwanttochangeeth0:2'sipaddress?回车

Argument""isn'tnumericinnumericeq(==)at./address.plline77,line2.
对整形变量$input==$i,如果$input是回车,并不走else,而是报错

正确的做法是:不论整形Perl字符串,都用eq
while(chomp($input=))
{
for($i=1,$found=0;$i<=$int_num;$i++)
{
if($inputeq$i){$found=1;}
}
whichinterfaceyouwanttoconfig?choiceanumber1234q:1
Doyouwanttochangeeth0'sipaddress?

◆Perl字符串几种连接运算符

运算符,常用于输出
print"純金",$v1;
print$str,"\n\n";

.运算符和,类似也是Perl字符串相加但,通常只用于print而.可以用在任何Perl字符串相加的地方
print'12345大家來跳舞'."helloworld";
結果變成:
12345大家來跳舞helloworld

x运算符号
print"OK"x4;
結果變成:
OKOKOKOK

◆为什么Perl字符串相加只能用.不能用+

因为可能+就是真加了(数字相加),而不是Perl字符串合并
$v1=99;
$v2='121';

print$v1+$v2;
$v1=99;
$v2='121';

print$v2.$v1;
220
12199

◆Perl字符串的连接可以连接整形和字符形,整形也被当作字符型处理,没有printf里的%d问题
$min=1;

$date="date"."0".$min;
print$date,"\n";

[root@ntrackermac]#./tip.pl
date01

uc轉成大寫,lc轉成小寫
$str="abCD99e";
$str=uc($str);
$str="abCD99e";
$str=lc($str);
[macg@localhostPerltest]$./tip.pl
ABCD99E
[macg@localhostPerltest]$./tip.pl
abcd99e                    #p#

◆Perl字符串中length取串长(字符数量)
#!/usr/bin/Perl
$str="abCD99e";
$strlen=length($str);
print$strlen,"\n";
[macg@localhostPerltest]$./tip.pl
7

◆substr串,位置,长度-------取子串,注意从0开始数位置
#!/usr/bin/Perl
$str="ABCDEFG1234567";
$a=substr$str,0,5;
print$a,"\n";
[macg@localhostPerltest]$./tip.pl
ABCDE

$a=substr$str,-4,2;
从倒数第4个开始,取两个字符
[macg@localhostPerltest]$./tip.pl
45

◆index在字串中找尋某一子字串的起始位置
#!/usr/bin/Perl
$str="ABCDEFG1234567";
$a="12";
$pos=index($str,$a);
print$pos,"\n";
[macg@localhostPerltest]$./tip.pl
7

@数组=split(pattern,串)将Perl字符串用某模式分成多个单词
#!/usr/bin/Perl
$str="ABCDEiFG12i34567";
@array=split(//,$str);按空格分
foreach(@array){
print$_,"\n";
}
[macg@localhostPerltest]$./tip.pl
ABCDEi
FG12i
345
6
7

@array=split(/+/,$line);当一行中各单词间的空格多于一个时

◆空格和TAB混杂情况下的split

[macg@localhostPerltest]$vitip.pl

#!/usr/bin/Perl
$str="ABCDEiFG12i34567";
@array=split(/\t/,$str);
foreach(@array){
print$_,"\n";
}
[macg@localhostPerltest]$./tip.pl
ABCDEiFG12i
34567
只分了两份,为什么?
因为同时满足TAB和空格的只有一处
所以必须加[]
@array=split(/[\t]/,$str);现在才是真正的按空格和TAB分
[macg@localhostPerltest]$./tip.pl
ABCDEi
FG12i

345
6
7
但还是有缺陷,TAB和空格相连时,TAB被认为是空格划分的子串,或者空格被认为是TAB划分的子串

◆用join定义Perl字符串数组格式符号(缺省是,)必须与qw()合用

语法:join($string,@array)
@array=qw(onetwothree);
$total="one,two,three";
@array=qw(onetwothree);
$total=join(":",@array);
$total="one:two:three";
数组内grep
@array=("one","on","in");
$count=grep(/on/,@array);
查询结果赋值给单变量
@array=("one","on","in");
@result=grep(/on/,@array);
查询结果赋值给数组
2
one
on
 

【编辑推荐】

  1. 解析Perl字符串用法
  2. Perl多线程的两种实现方式
  3. Perl二维数组用法全程剖析
  4. Perl基础 Perl 哈希表概述
  5. 解析Perl正则表达式中的模式

当前名称:Perl字符串基本操作详解
文章来源:http://www.mswzjz.cn/qtweb/news47/221847.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能