17. 2-2-2.warningsがある場合(perlstudy2_102.pl)
#!/usr/bin/perl
use warnings;
$greeting = "Hello Worldn";
print "<⼀度⽬の挨拶>n";
print $greeting;
#
# (あれやこれや処理を書く)
#
# 最初に定義した$greeting 変数を使う
# $greeting のつもりで$greetings とタイプミス
print "<⼆度⽬の挨拶>n";
print $greetings; # <<< line 16
【実⾏例】
Name "main::greetings" used only once: possible typo at ./perlstudy2_102.pl line 16.
<⼀度⽬の挨拶>
Hello World
<⼆度⽬の挨拶>
Use of uninitialized value $greetings in print at ./perlstudy2_102.pl line 16.
『16 ⾏⽬の greetings という変数が⼀度しか使われていない。typo では?』
『greetings という変数が初期化されてないのに使われてる。』
と怒られているのがわかります。このように "use strict"だけを指定した場合と⽐べても、より詳しいエラー内容が出⼒されていることがわかります。
18. 23.『use utf8』
ソースコードで Unicode(UTF-8)を扱うことができるようになります。
指定がない場合、⽂字列が単なるバイト列として扱われ⽂字列の検索で不都合が起きる場合があります。
use utf8 がある場合とない場合の例は⽂字コードの深い話になってしまうのでここでは割愛します。使い⽅だけ⽰します(use strict, use warnings も併記)。
2-3-1.use utf8 の使い⽅(perlstudy2_103.pl)
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
#標準出⼒に使う⽂字コードを utf8 に設定する。
binmode STDOUT, ":encoding(utf8)";
#変数の宣⾔
my $greeting;
$greeting = "Hello Worldn";
print "<⼀度⽬の挨拶>n";
print $greeting;
#
# (あれやこれや処理を書く)
#
# 最初に定義した$greeting 変数に別の挨拶を代⼊
$greeting = "こんにちはこんにちはn";
print "<⼆度⽬の挨拶>n";
print $greeting;
33. if ⽂の条件式を否定『!』すれば if ⽂でも書けるので、最初のうちは使わないほうがよいかもしれません。
5-1-3.switch, select ⽂に相当する構⽂
標準では存在しません。地道に if ⽂で実装しましょう。
ただし、CPAN で Switch モジュールをインストールすれば Switch 構⽂が使えるらしいです。
http://search.cpan.org/~rgarcia/Switch-2.16/Switch.pm
【Switch モジュールの例】
use Switch;
switch ($val) {
case 1 { print "number 1" }
case "a" { print "string a" }
case [1..10,42] { print "number in list" }
case (@array) { print "number in list" }
case /w+/ { print "pattern" }
case qr/w+/ { print "pattern" }
case (%hash) { print "entry in hash" }
case (&sub) { print "arg to subroutine" }
else { print "previous case not true" }
}