カスタム検索
このエントリーをはてなブックマークに追加
tomo.gif (1144 ツバツイツト)line.gif (927 ツバツイツト)line.gif (927 ツバツイツト)line.gif (927 ツバツイツト)To previous pageTo home pageMailing to me

かわいいコードの書き方

Modified: 5 March 2006


2次元配列(配列へのリファレンスへのリファレンス)を処理
my変数をまとめて宣言
たっくさんのHTMLデータを出力
ファイルをアップロードする方法

後半の全角スペースを削除する方法
DBIでデータベース(MySQL)を処理する方法


2次元配列(配列へのリファレンスへのリファレンス)を処理 

Perlは多次元配列が苦手?、と勝手に思いました。

いろいろなコードから類推していろいろ書いてもことごとくエラーになります。

my $array = [ [1, 2], [3, 4] ];

foreach my $arr1 (@$array) {
    foreach my $arr2 (@$arr1) {
        print $arr2;
        print "\n";
    }
    print "-\n";
}

実行すると、以下のようになります。

1
2
-
3
4
-

ちょっと変形します。

my (my $array = [ [1, 2], [3, 4] ];

foreach my $arr1 (@$array) {
    my ($a, $b) = @$arr1;
    print $a."-".$b."\n";
}

実行すると、以下のようになります。

1-2
3-4


myの変数をまとめて宣言 

"use strict" を付けずに作ったソースに、"use strict" を付けると、山のようにエラーが出ます。

そのほとんどは、変数を事前に宣言していないためのエラーです。そこで、せっせと以下のようなコードを加えます。

"my $string1; my $string2; my $string3;" かっこ悪いので、

"my $string1, $string2, $string3;" としてみるがエラーになる。

こう書けばいいそうです。

my ( $string1, $string2, $string3 );


たっくさんのHTMLデータを出力 

文字の出力は、"print"文で行いますが、たくさんの文字を出力する場合、全部の行に、"print"文を記述するのは面倒ですし、可読性もよくありません。

以下のように、"print <<"EOM"から、EOM の間に文字列を列挙できます。

print <<"EOM"
<html>
<body>
メッセージ: $msg
</body>
</html>
EOM

ダブルコーテーションで囲まれた文字列同様に、"$msg" のように変数展開してくれます。

このような書き方は、「hereドキュメント」と呼び、Linuxなどのシステムとの連携機能で、Perlの仕様ではありません。
また、上記の"
EOM"の文字は、対応しておればどんな文字列でもかまいません。終わりを空白行とする場合は、"print <<;"とだけ書きます。


To previous pageTo home pageMailing to meJump to Top of pageline.gif (927 ツバツイツト)line.gif (927 ツバツイツト)tomo.gif (1144 ツバツイツト)
カスタム検索



このエントリーをはてなブックマークに追加