跳轉到內容

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";
  • 嘗試編寫一個程式,用同一個 print 語句向幾個人問好,但每次更改包含名字的變數。
  • 嘗試編寫一個程式,包含四個變數,兩個人的名字和姓氏,並在他們結婚時列印名字的更改。
  • 嘗試編寫一個程式,將兩個變數加在一起,儲存到第三個變數中,並列印它們以及結果。
上一頁:第一個程式 索引 下一頁:字串
華夏公益教科書