Perl 網頁程式設計課程目錄

Perl 表單資料分離 (Data Split of Perl Form)

除了先前所討論的表單資料是以混成一連串的方式來傳送外, 其實, 儲存在資料庫的資料也是混成一連串的。

所以,我們必需能夠將混成一連串的資料分離(Split), 然後抽取需要的資料來使用。 本節便是探討這問題。

要成功分離資料, 首先要了解資料連結的方式。 如下圖所示, 每個資料均由分離符號 (Delimiter) 分隔, 成為一筆資料錄。而所有資料錄便組成資料庫了。

data join with delimiter

Okay! 了解完資料連結的方式後, 可以正式開始編寫 Perl 程式了。

編寫及在瀏覽器執行以下 Perl 程式 :

#!/usr/bin/perl
print "Content-type: text/html\n\n";
#
#
$family="Kong:Wai:Keung:Yau";
#
#
### Split Elements #######
#
@member=split(/:/, $family);
#
### Print Elements #######
#
print "@member";
print "<P>";
#
print "The 1st member is $member[0]";
print "<BR>";
print "The 2nd member is $member[1]";
print "<BR>";
print "The 3rd member is $member[2]";
print "<BR>";
print "The 4th member is $member[3]";
print "<BR>";

Perl 程式解釋如下:

第 5 行 : $family="Kong:Wai:Keung:Yau";

$family 這筆資料錄是由四個資料連結而成.

第 10 行 : @member=split(/:/, $family);

將連結 $family 用的分離符號 ":" 拋棄, 以便將連結的資料分離.

分離了的資料更放在單量陣列 @member 內, 以方便使用.

看! Perl 就是這樣令人喜愛, 單單一句就可以做出這麼多動作.

第 14 行 至 24 行 :

不用解釋啦 ! 如真的不明白, 請重新翻閱本 Perl 課程第四章.

瀏覽器應出現 :

Kong Wai Keung Yau

The 1st member is Kong
The 2nd member is Wai
The 3rd member is Keung
The 4th member is Yau


實 例 View Example

Okay, 有了資料分離的基礎後, 可以詳細探討上一章 (即第五章) 的表單資料處理過程了.

讀者應還記得, 表單上的資料是混成一串的形態傳送到 cgi-bin 目錄內的 Per l程式, 如下:

name1=value1&name2=value2

我們現在就探討如何將這混成一連串的資料分離 (Split), 然後抽取需要的資料 (value1 及value2) 來使用.

#!/usr/bin/perl
print "Content-type: text/html\n\n";
#
$buffer="name1=value1&name2=value2";
#
#
### Step 1 : Split into pairs #######
#
@pair=split(/&/, $buffer);
#
$firstpair=$pair[0];
$secondpair=$pair[1];
#
#
### Print Pairs #######
#
print "@pair";
print "<P>";
print "The 1st pair is $firstpair";
print "<BR>";
print "The 2nd pair is $secondpair";
print "<P>";
#
### Step 2 : Split into elements #######
#
@element1=split(/=/, $firstpair);
@element2=split(/=/, $secondpair);
#
### Print Elements ###############
#
print "The 1st value of FIRST PAIR is $element1[0]";
print "<BR>";
print "The 2nd value of SECOND PAIR is $element2[1]";
print "<BR>";

Perl 程式解釋如下:

第 4 行 : $buffer="name1=value1&name2=value2";

這是從表單傳送到 Perl 程式的資料串.

第 9 行 : @pair=split(/&/, $buffer);

將用 "&" 連結的每組資料分離, 結果是 :

name1=value1 分為一組, 而 name2=value2 分為另一組.

第 26 行 : @element1=split(/=/, $firstpair);

將用 "=" 連結的第一組 (name1=value1) 資料分離.

第 27 行 : @element2=split(/=/, $secondpair);

將用 "=" 連結的第二組 (name2=value2) 資料分離.

瀏覽器應出現以下的結果. 由似可見, 成串的資料是很有秩序及層次的被分離.

name1=value1 name2=value2

The 1st pair is name1=value1
The 2nd pair is name2=value2

The 1st value of FIRST PAIR is name1
The 2nd value of SECOND PAIR is value2

實 例 View Example