2014-03-22
文法 †
省略
別ファイルを読み込む †
#sh(php){{
$filepath = "/home/user/lib/mylib.pl";
require $filepath;
}}
スカラーか、配列か、ハッシュか、関数か区別する †
#sh(php){{
my $scalar = 0;
my @array = qw/ 1 2 3 /;
my %hash = ( 4 => 5);
sub subroutine() { return 6; }
my $ref_scalar = \$scalar;
my $ref_array = \@array;
my $ref_hash = \%hash;
my $ref_subroutine = \&subroutine;
print "Scalar > ", ref($scalar), "\n";
print "Array > ", ref(@array), "\n";
print "Hash > ", ref(%hash), "\n";
print "Subroutine > ", ref(subroutine), "\n";
print "ScalarRef > ", ref($ref_scalar), "\n";
print "ArrayRef > ", ref($ref_array), "\n";
print "HashRef > ", ref($ref_hash), "\n";
print "SubroutineRef > ", ref($ref_subroutine), "\n";
}}
出力
Scalar >
Array >
Hash >
Subroutine >
ScalarRef > SCALAR
ArrayRef > ARRAY
HashRef > HASH
SubroutineRef > CODE
型グロブ †
Perlのグローバル変数管理テーブルの1要素(構造体)を表す型グロブの宣言*1とのこと。
#sh(php){{
#!/usr/bin/perl
use strict;
use Data::Dumper;
$Data::Dumper::Deparse = 1;
our $someValue = 1;
our @someValue = (0, 1, 2);
our %someValue = ("key0" => 0, "key1" => 1, "key2" => 2);
sub someValue() { return "someValue"; }
print Dumper(\$someValue) . "\n";
print "-----\n";
print Dumper(\@someValue) . "\n";
print "-----\n";
print Dumper(\%someValue) . "\n";
print "-----\n";
print Dumper(\&someValue) . "\n";
print "#####\n";
print Dumper(\${*someValue}) . "\n";
print "- - -\n";
print Dumper(*someValue{SCALAR}) . "\n";
print "-----\n";
print Dumper(\@{*someValue}) . "\n";
print "- - -\n";
print Dumper(*someValue{ARRAY}) . "\n";
print "-----\n";
print Dumper(\%{*someValue}) . "\n";
print "- - -\n";
print Dumper(*someValue{HASH}) . "\n";
print "-----\n";
print Dumper(\&{*someValue}) . "\n";
print "- - -\n";
print Dumper(*someValue{CODE}) . "\n";
}}
$VAR1 = \1;
-----
$VAR1 = [
0,
1,
2
];
-----
$VAR1 = {
'key2' => 2,
'key1' => 1,
'key0' => 0
};
-----
$VAR1 = sub () {
use strict;
return 'someValue';
};
#####
$VAR1 = \1;
- - -
$VAR1 = \1;
-----
$VAR1 = [
0,
1,
2
];
- - -
$VAR1 = [
0,
1,
2
];
-----
$VAR1 = {
'key2' => 2,
'key1' => 1,
'key0' => 0
};
- - -
$VAR1 = {
'key2' => 2,
'key1' => 1,
'key0' => 0
};
-----
$VAR1 = sub () {
use strict;
return 'someValue';
};
- - -
$VAR1 = sub () {
use strict;
return 'someValue';
};
警告スイッチ †
特殊変数"$^W"でアクセスする*2。
ストリームのモード(テキスト/バイナリ)切替 †
binmodeを使う*3。
パッケージ区切り文字 †
現在は"::"が主流だが、昔は"'"を使っていた*4。
#sh(php){{
#!/usr/bin/perl
$value = 10;
print $main'value;
print "\n";
print $main::value;
print "\n";
}}
10
10
コーディングスタイル †
一例がこちら
関連ページ †