Perl學習筆記 一 變數

2021-04-20 04:58:01 字數 1669 閱讀 2311

標量可以存放的資料型別有很多,除了常用的字串和數字外,還可以存放引用, 而引用則可以是任何型別資料的引用.

比如:@array = (1, 2, 3);

$ref = /@array; #建立乙個對陣列array的引用

注意引用的使用方法是, 在所引用的物件前面加上/,而在解引用的時候需要記住的是引用是乙個標量,所以$ref表示的是乙個引用, 要繼續解釋該引用所引用的資料還需要根據引用的資料型別進一步加以解釋,比如:

如果標量$ref引用的是乙個陣列, 那麼: $ref->[0], 或者$$ref[0], 或者$($ref)[0], 都是取得該陣列的第乙個元素.

如果標量$ref引用的是乙個hash表, 那麼: $ref->, 或者$$ref, 或者$($ref), 都是取得該hash表中鍵為key的value.

如果標量$ref引用的是乙個函式, 那麼: &$ref, 或者&($ref), 都是取得對該函式的呼叫.

為了方便理解記憶perl中的引用使用方法,可以把$ref理解為所引用之物的名字, 比如$$ref[0]中, 將$ref理解為array, 那麼$$ref[0]可以解釋為$array[0].或者, 用c中指標的方式來理解perl中引用->符號的使用, 將$ref理解為乙個"指標", 而在->右邊, 需要根據所引用的型別進行解釋, 比如陣列就是, hash表就是{}, 等等.

列表與陣列

在perl中, 使用乙個列表對hash進行賦值, 分別是key1 value1 key2 value2...依次類推, 也就是說, 當採用乙個列表對hash進行賦值操作的時候, 鍵/值是交替出現的, 而在perl中"=>"和","的意義是一樣的, 放在對hash進行賦值的列表中, 增加了**的可讀性.

同時注意到, 在perl中, hash的鍵都是字串, 但是在{}之中的的鍵可以不加""或者''號, 比如$hash, $hash, $hash都是乙個意思.

在perl中, 如果僅需要取得乙個資料的時候, 需要採用$符號.標量自不必解釋, 對陣列而言, $array[0]是取得第乙個陣列元素, 而對hash而言, $hash是取得鍵為key的值.

而要取得陣列或者hash中的部分元素時,使用@符號, 如@array[0,1]返回陣列array中的第一和第二個元素組成的列表, @hash返回hash中鍵為key1, key2的值組成的列表.注意沒有%hash這樣的語法, 如果要取得所有的陣列,使用@array;如果要取得全部hash中的元素, 包括key和value,則使用%hash.

變數的內插(interpolating)

當把乙個陣列變數在""中內插的時候, 則將該陣列中的各個元素用變數$"(通常是空格)分隔開組合成乙個字串, 因此:

$temp = join( $", @argv );

print $temp;

print "@argv";

的意義是一樣的.

而如果乙個陣列不放在""中進行內插的話, 僅僅返回這個陣列的所有元素組成的列表,如:

@array = (1,2,3);

print @array;

得到的是:123(注意123之間沒有空格分隔).

不存在對整個hash的內插, 比如變數hash是乙個hash表, 那麼:

print "%hash";

僅僅列印出%hash, 它並沒有針對該hash進行內插.

變數內插僅僅針對$和@作用的變數.

perl學習筆記一 變數

變數 一.直接量 常量 perl中常量和其他語言例如c語言沒什麼太大區別。所以在下面指出一些與其他語言不相同的地方。1.1 數字常量 在perl中可以表示八進位制和十六進製制。八進位制以0打頭,十六進製制以0x打頭。例如 a 010 八進位制 b 0x10 十六進製制 為了不跟八進位制的數字混淆,數...

PHP學習筆記(一)變數

嗯 第一次學習著使用一門標記語言,也是第一次寫部落格,記錄一下自己的成長狀態 1 宣告 不同於學過的c,php不要求在使用變數前宣告變數,第一次給變數賦值,才算建立了這個變數,用於儲存數字,文字等值,之後便可以重複地使用,宣告變數用 a 100 b string c true d 99.99 key...

Swift學習筆記一 變數)

此系列實驗筆記如下環境 csdn居然不好複製高亮 常量變數使用 var str el var 宣告變數,未指定型別編譯器自動推導,行尾可以不加分號 let 字串2 lo let 宣告常量,支援中文變數使用unicode編碼 var str3 string worl 指定型別 var chr char...