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

コーディングスタイル

一例がこちら

関連ページ


*1 http://blog.livedoor.jp/sasata299/archives/51200887.html
*2 http://www.loose-info.com/main/memolist/perl/var_warning.html
*3 http://itpro.nikkeibp.co.jp/article/Reference/20080930/315706/?rt=nocnt
*4 http://perldoc.jp/docs/perl/5.8.8/perlmod.pod

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-05-02 (月) 11:35:39