PERL語言學習二(PERL常量與標量)

常量

         在程序運行中,其值不能改變且爲一定值的量稱爲常量PERL的常量有兩種:數字常量字符串常量。、

 

標量:單件事物。數字,字符串

可以用操作符對標量進行操作,結果通常也是一個標量。

 

常量用途:

1.  給變量賦值。

2.  作參數傳遞給函數。

數字常量

數據標量:

PERL裏,總是按“雙精度浮點數”來保存和運算。不存在整數。所謂整數,其實也是雙精度浮點數。

 

Perl允許在整數直接量裏插入下劃線,將若干位分開:

21_321_567_654

 

非十進制的整數直接量:

0:八進制  0123 # 83

0x:十六進制 0xff

0b:二進制 0b101110

 

數字操作符:+ - * / %

%:取模操作符,先取整後再求餘。

**:乘冪,2**3,表23次方。

字符串常量

PERL中,字符串一般用雙引號單引號括起來,包含任何字符

 

單引號與雙引號的區別

1.  單引號內的字符串直接量:不轉換

#!/usr/bin/perl
$object =
"apple";
$string =
'this is an $object';#單引號
print $string;

輸出:this is an $object

2.  雙引號內的字符串直接量:轉換(變量插入)。       

   #!/usr/bin/perl
$object =
"apple";
$string =
"this is an $object";#雙引號
print $string;

   輸出:this is an apple

3.雙引號識別轉義字符而單引號只識別兩個特殊轉義字符(/’,//

   $string = 'he//she is a student';
$string1 =
'/'nothing here/'';
$string2 =
'no/nyes';
print
"識別//:",$string,"/n";
print
"識別/':",$string1,"/n";
print
"不能識別:",$string2,"/n";

       輸出:

識別/:he/she is a student

識別':'nothing here'

不能識別:no/nyes

 

字符串操作:

.:拼接

"hello"." world" #等同於"hello world"

 

x:重複操作符

"fred"x2 # "fredfred"

5x4  # 5555

 

數字和字符串的自動轉換:

          對數字進行運算的操作符(如乘法)如果遇到數字字符串的操作數,perl會自動將數字字符串轉換成等效的十進制浮點數進行運算。

數字字符串:”12345”

例:

$num1 = "12345";
$num2 =
"1";
print $num1 + $num2;

 

非數字符串的轉換:

$num1 = "123.5abc";
$num2 =
1;
$num3 =
"abc123";
$sum1 = $num1 + $num2;
$sum2 = $num2 + $num3;
print
"123abc + 1 = ",$sum1,"/n";
print
"abc123 + 1 = ",$sum2,"/n";結果爲:

123.5abc + 1 = 124.5

abc123 + 1 = 1

 

字符串中非數字部分會被略過

"12fred34"*"3" # 36

 

完全不含數字的字符串會被轉換成

“a123”*”2”  # 0

 

非數字符串的轉換規則:

混合字符串運算中,把混合字符串從左到右取出字符,直到取到第一個非數字字符爲止,那麼此之前所取的浮點數用來參與運算。

 

變量

PERL變量基本類型:

1.標量:可以存放數字和字符;

2.數組:多個標量的集合;

3.散列:一程特殊的數組,關聯數組。

                                

兩種衍生變量:

1.引用:特殊的標量,類似於C的指針;

2.句柄:一串標識輸入輸出的字符串,用來控制輸入輸出。

 

Perl中的數據類型少,卻可以用簡單的數據類型,生成相當複雜的數據結構,並且具有很快的數據操作能力。

 

變量命名:

一般變量名以小字字母,大寫字母或下劃線開頭,後面可以有數字,字母,特殊字符,而且長度沒有限制。如:$haha,$string等等。

 

         當變量以數字開頭時,它是一種特殊變量,叫反引用變量,變量名必須全爲數字。如:$123;變量名也可以爲單個字符,此字符非字母、非數字和非下劃線,它也是特殊變量,叫內置變量

 

在變量命名時,前面必須加指示符,指示變量類型:

1.$爲標量; $haha

2.@爲數組; @array

3.%爲散列; %hash

4.句柄比較特別,沒有指示符。

 

PERL區分大小寫

$haha = 111;
$HaHa =
222;
print
"小寫:",$haha,"/n";
print
"大寫:",$HaHa,"/n";

結果:

小寫:111

大寫:222

 

變量賦值:

標量:

$num = 123;

$char = “abcd”;

數組:

@array = (“123”,”234”,”345”);

$array[1] = 23;

散列:

%hash = {“age” => 18,”you” => 34};

$hash{“age”} = 28;

 

變量作用域:

1.全局作用域:PERL默認作用域。

2.局部作用域:只有在函數內才能使用。local(), my()操作符.

$char1 = "all";
my $char2;
$char2 =
"out";

{
         my $char3;
         $char3 =
"in" ;
         print
"$char1,$char2,$char3/n";
}
print
"#####################/n";
print
"$char1,$char2,$char3/n";

結果:

all,out,in

#####################

all,out,

 

$char1 = "all";
my $char2 =
"out";
{
 my $char2;
 $char2 =
"in";
 print
"$char1,$char2/n";
}
 print
"$char1,$char2/n";

結量:

all,in

all,out

 

localmy的區別

local:定義的變量除了在塊內有效外,在塊內調用的子程序也可以訪問它,即使此子程序在塊外定義。

My:定義的變量對塊內的子程序也不可見。比local更安全。

 

 

內置變量:

爲了編程方便和補充語法不足。

內置變量表

變量

長名格式

含義

$_

$ARG

默認輸入變量或模式搜索空格

$&

$MATCH

最近成功匹配模式所對應的字符

$’

$PREMATCH

最近成功匹配模式之後的字符

$+

$LAST_PAREN_MATCH

最近搜索模式匹配的最後一個括號

$*

$MULTILINE_MATCHING

控制字符串多行匹配的開關

$.

$INPUT_LINE_NUMBER

最近文件句柄讀取的當前輸入行號

$/

$INPUT_RECORD_SEPARTOR

輸入記錄分隔符

$|

$OUTPUT_AUTOFLUSH

控制是否進輸出緩衝的開關

$,

$OUTPUT_FIELD_SEPARATOR

Print函數輸出字段分隔符

$/

$OUTPUT_RECORD_SEPARATOR

Print函數輸出記錄分隔符

$”

$LIST_SEPARATOR

Print函數輸出清單分隔符

$#

$OFMT

打印數字的輸出格式

$%

$FORMAT_PAGE_NUMBER

當前所選輸出文字句柄的當前頁號

$=

$FORMAT_LINES_PER_PAGE

當前所選輸出文件句柄的當前頁長號

$-

$FORMAT_LINES_LEFT

當前所選輸出文件句柄的頁面中餘下行數

$~

$FORMAT_NAME

當前所選輸出文件句柄的當前格式名

$^

$FORMAT_TOP_NAME

當前所選輸出文件句柄的當前頁頭格式名

$:

$FORMAT_LINE_BREAK_CHARACTERS

格式中要分隔字符串以填滿連續字段之前的字符設置

$!

$ERRNO

錯誤號的當前數字或字符串

$0

$PROGRAM_NAME

所運行的PERL腳本的文件名

$$

$PROCESS_ID

運行該程序的PERL進程號

$<

$REAL_USER_ID

進程的實際用戶ID

$>

$EFFECTIVE_USER_ID

進程的生效用戶ID

$(

$REAL_GROUP_ID

進程的實際組ID

$)

$EFFECTIVE_GROUP_ID

進程的生效組ID

$[

$

數組的起始索引號

$]

$PERL_VERSION

PERL解釋器版本號

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章