一、變量
變量是存儲(chǔ)在內(nèi)存中的數(shù)據(jù),創(chuàng)建一個(gè)變量即會(huì)在內(nèi)存上開辟一個(gè)空間。
perl的基本數(shù)據(jù)類型
1.1 標(biāo)量
標(biāo)量 $ 開始,是一個(gè)單一的數(shù)據(jù)單元,可以是整數(shù)、浮點(diǎn)數(shù)、字符、字符串、段落等。
1.1.1 字符串標(biāo)量
注意單引號(hào)和雙引號(hào)的使用區(qū)別,雙引號(hào)可以引入變量,輸出變量代表的值,單引號(hào)直接輸出$var(字符串),單引號(hào)直接原樣輸出所有內(nèi)容,包括換行符
字符串之間連接用 “ . " ,字符串與數(shù)字之間連接也是用 " . "
實(shí)例
$var = "字符串標(biāo)量 - 菜鳥教程!";
$quote = '我在單引號(hào)內(nèi) - $var';
$double = "我在雙引號(hào)內(nèi) - $var";
$escape = "轉(zhuǎn)義字符使用 -\tHello, World!";
print "var = $var\n";
print "quote = $quote\n";
print "double = $double\n";
print "escape = $escape\n";
執(zhí)行以上程序,輸出結(jié)果為:
var = 字符串標(biāo)量 - 菜鳥教程!
quote = 我在單引號(hào)內(nèi) - $var
double = 我在雙引號(hào)內(nèi) - 字符串標(biāo)量 - 菜鳥教程!
escape = 轉(zhuǎn)義字符使用 - Hello, World!
1.1.2 特殊字符
不知道何種場(chǎng)合應(yīng)用,不太理解,用到再來具體學(xué)習(xí)。
1.1.3 v 字符串
不知道何種場(chǎng)合應(yīng)用,不太理解,用到再來具體學(xué)習(xí)。
1.2 數(shù)組
數(shù)組 @ 開始,用來存儲(chǔ)一個(gè)有序的標(biāo)量值的變量。
@ages = (25, 30, 40);
print "\$ages[0] = $ages[0]\n";
輸出結(jié)果為
$ages[0] = 25
這里可以看出跟python中的列表類似。
1.2.1 創(chuàng)建數(shù)組
數(shù)組變量以@符號(hào)開始,元素放到括號(hào)內(nèi),也可以以qw/。。。/來定義數(shù)組,qw / / 里面可以包括字符串等,以空格或者換行來分割為數(shù)組
或者直接按照索引來數(shù)組賦值,跟python列表類似,也是從0開始,負(fù)數(shù)是反向讀取。
1.2.2 數(shù)組大小
數(shù)組長度返回的是數(shù)組物理大小,而不是元素的個(gè)數(shù),這個(gè)開始有點(diǎn)不理解,通過下面的例子進(jìn)行理解
實(shí)例1
#!/uer/bin/perl
@array = (1,2,3);
$size = @array;
$max_index = $#array;
print "數(shù)組大小: $size\n";
print "最大索引: $max_index\n";
print "該數(shù)組為:@array\n";
執(zhí)行以上程序,輸出結(jié)果為:
數(shù)組大小: 3
最大索引: 2
該數(shù)組為:1 2 3
實(shí)例2
#!/uer/bin/perl
@array = (1,2,3);
$size = @array;
$array[50] = 4;
$max_index = $#array;
print "數(shù)組大小: $size\n";
print "最大索引: $max_index\n";
print "該數(shù)組為:@array\n";
執(zhí)行以上程序,輸出結(jié)果為:
數(shù)組大小: 51
最大索引: 50
該數(shù)組為:1 2 3 4
通過這2個(gè)例子,可以看出第1、2個(gè)實(shí)例的區(qū)別是$arrar[50]=4,數(shù)組可以跳過中間,直接定義第50個(gè)元素為4,那中間都是空,長度也會(huì)變?yōu)?1,而不是4。
1.2.3 添加和刪除數(shù)組元素
直接通過實(shí)例來解釋
#!/usr/bin/perl
# 創(chuàng)建一個(gè)簡單是數(shù)組
@sites = ("google","runoob","taobao");
$new_size = @sites ;
print "1. \@sites = @sites\n"."原數(shù)組長度 :$new_size\n";
# 在數(shù)組結(jié)尾添加一個(gè)元素
$new_size = push(@sites, "baidu");
print "2. \@sites = @sites\n"."新數(shù)組長度 :$new_size\n";
# 在數(shù)組開頭添加一個(gè)元素
$new_size = unshift(@sites, "weibo");
print "3. \@sites = @sites\n"."新數(shù)組長度 :$new_size\n";
# 刪除數(shù)組末尾的元素
$new_byte = pop(@sites);
print "4. \@sites = @sites\n"."彈出元素為 :$new_byte\n";
# 移除數(shù)組開頭的元素
$new_byte = shift(@sites);
print "5. \@sites = @sites\n"."彈出元素為 :$new_byte\n";
輸出結(jié)果
1. @sites = google runoob taobao
原數(shù)組長度 :3
2. @sites = google runoob taobao baidu
新數(shù)組長度 :4
3. @sites = weibo google runoob taobao baidu
新數(shù)組長度 :5
4. @sites = weibo google runoob taobao
彈出元素為 :baidu
5. @sites = google runoob taobao
彈出元素為 :weibo
其中需要注意的是push,unshift,左邊$new_size返回的是長度,而pop和shift,左邊$new_byte返回的是刪除和移除的元素,而不是長度。