跳轉到內容

Perl 程式設計/基本變數

來自華夏公益教科書
上一頁:第一個程式 索引 下一頁:字串

在 Perl 中,有五種不同型別的變數,每種變數都用自己的識別符號字元表示:標量 ($)、陣列 (@)、雜湊 (%)、子程式 (&) 和型別全域性變數 (*)。我們首先介紹標量,因為它們最容易理解。

標量變數

[編輯 | 編輯原始碼]

儘管名稱很複雜,但標量變數只是一個儲存值以便以後使用的方式。例如,考慮

#!/usr/bin/perl

print "Hello, John.\n";

如果我們想更改使用者的名字,我們只需更改字串即可。但是,如果這個程式有數百行,並且這個名字被使用了幾次,那麼試圖在整個程式中找到這些字串會比值得的麻煩更多。相反,通常使用變數來儲存任何可能改變的值。

#!/usr/bin/perl

my $firstname = "John";

print "Hello, $firstname.\n";

這個新程式輸出與上一個程式完全相同。這個程式有幾個新東西,最明顯的是這一行

  • my $firstname = "John";
    • my 告訴 perl 直譯器給你一個新的變數。從技術上講,這是可選的,但強烈推薦。
    • $firstname 告訴 perl 直譯器你想要一個名為 firstname 的標量變數
    • = 告訴 perl 直譯器將它右側的值分配給左側的變數
    • "John" 告訴 perl 直譯器,每當你使用 $firstname 時,你都希望它使用 字串 John。

雖然使用變數來包含你程式設計的資訊很好,但變數用於儲存資料,這些資料可以在你的程式執行時改變,正如它們的名字所暗示的那樣。

#!/usr/bin/perl

my $firstname = "Jonathan";
print "Hello, $firstname.\n";

$firstname = "John";
print "Goodbye, $firstname.\n";

你應該注意到,當我們更改$firstname的值時,我們不需要使用my運算子。這是因為我們已經告訴 perl 給我們這個變數,現在它是我們的,我們可以隨心所欲地使用它。

現在,雖然字串非常有用,但在計算機程式中也有數字的空間。標量變數可以包含數字或字串。

#!/usr/bin/perl
 
my $age = 17;

print "Hello, $age year old.\n";

Perl 沒有提供任何簡單的方法來判斷儲存在標量變數中的資訊型別。實際上,如果你給 Perl 一個字串並要求它進行數字運算,Perl 會自動將字串轉換為數字;反之亦然。以下是一個例子

#!/usr/bin/perl

my $x = 10;
my $y = $x + 1;

print "Using a number $x + 1 = $y.\n";

$x = "10";
$y = $x + 1;

print "Using a string $x + 1 = $y.\n";

$x = "ten";
$y = $x + 1;

print "Using an English word, $x + 1 = $y.\n";

$x = "2ten";
$y = $x + 1;

print "Using a funny string, $x + 1 = $y.\n";

如果你執行這個程式,你可以看到前兩個例子都將 11 儲存到 $y 中。然而,Perl 不會將英文單詞轉換為數字,如果你給出一個像"ten"這樣的字串,它不會將其轉換為 10,而是將其視為 0。最後一個例子表明它實際上試圖將字串理解為數字,並在遇到它不理解的東西時停止。

原始列印

[編輯 | 編輯原始碼]

當然,可以在不將變數包含在字串中的情況下輸出變數。

#!/usr/bin/perl

my $forename = "John";
my $message = "Hello ";

print $message;
print ", ";
print $forename;
print "\n";
  • 嘗試編寫一個程式,該程式對幾個人說 hello,每次都使用相同的 print 語句,但更改包含名字的變數。
  • 嘗試編寫一個程式,包含四個變數,兩個人的姓和名,並在他們結婚時打印出名字的變化。
  • 嘗試編寫一個程式,將兩個變數加在一起形成第三個變數,並列印它們和結果。
上一頁:第一個程式 索引 下一頁:字串
華夏公益教科書