Perl字串基本操作詳解

2021-05-23 13:13:12 字數 4092 閱讀 8738

本文和大家重點討論一下 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=<>))

elsif($input=='n')

else

print"input:";

}[macg@localhostperltest]$./tip.pl

input:x

yourinputisx

chooseq

◆perl

字串用

==是最常犯的錯誤

即使是整形,也盡量用 eq,少用 ==

while(chomp($input=))

else

doyouwanttochangeeth0:2'sipaddress?回車

argument""isn'tnumericinnumericeq(==)at./address.plline77,line2.

對整形變數 $input==$i,如果 $input是回車,並不走 else,而是報錯

正確的做法是:不論整形 perl字串,都用 eq

while(chomp($input=))

}whichinte***ceyouwanttoconfig?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;

22012199

◆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                   

◆perl

字串中

length

取串長(

字元數量)

#!/usr/bin/perl

$str="abcd99e";

$strlen=length($str);

print$strlen,"/n";

[macg@localhostperltest]$./tip.pl7◆

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.pl45◆

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)

[macg@localhostperltest]$./tip.pl

abcdei

fg12i

3456

7@array=split(/+/,$line);當一行中各單詞間的空格多於乙個時 ◆

空格和tab

混雜情況下的

split

[macg@localhostperltest]$vitip.pl

#!/usr/bin/perl

$str="abcdeifg12i34567";

@array=split(//t/,$str);

foreach(@array)

[macg@localhostperltest]$./tip.pl

abcdeifg12i

34567

只分了兩份,為什麼?

因為同時滿足 tab和空格的只有一處

所以必須加

@array=split(/[/t]/,$str);現在才是真正的按空格和 tab分

[macg@localhostperltest]$./tip.pl

abcdei

fg12i

3456

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);

查詢結果賦值給陣列

2one

on

perl 字串基本操作

1 perl字串中length取串長 字元數量 usr bin perl str abcd99e strlen length str print strlen,n macg localhostperltest tip.pl 72 substr串,位置,長度 取子串,注意從0開始數字置 usr bin...

perl 字串操作

字串陣列元素賦值 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 ...

Perl讀寫檔案 字串操作

perl中讀寫檔案的方法非常簡單,可以使用open或sysopen函式來開啟檔案,linux下執行perl指令碼只需 xx.pl 或 perl xx.pl。讀檔案 open 檔案控制代碼,檔名 或者 open 檔案控制代碼,檔名 如 open in,test.txt while close in 寫...