Perl で簡単なクラスを作成して動作を確認してみる

これまで、Perl でクラスを作成する必要はなかったのだが、HTML::Parser を継承したクラスを使うといろいろ便利そうなので、試してみた。

サンプルのクラス

Sample.pm として保存する。

package Sample;
use strict;

sub new {
    my ($class, $a, $b, $c) = @_;
    my $self = {
        a => $a,
        b => $b,
        c => $c,
        d => ()
    };
    bless $self, $class;
    return $self;
}

sub add {
    my ($self) = @_;
    $self->{b} = $self->{b};
    $self->{a} = 'changed';
    push @{$self->{d}}, 'A';
    push @{$self->{d}}, 'B';
    push @{$self->{d}}, 'C';
}

1;
__END__

クラスを実行するファイル

sample.pl として保存する。

#!/usr/bin/env perl
unshift @INC, '.';

use strict;
use warnings;
use utf8;
use Data::Dumper;

use Sample;

my $s = Sample->new(1, 'a', 'B');

print $s->{a}, "\n";
print $s->{b}, "\n";
print $s->{c}, "\n";

$s->{a} = '2';
$s->add();

foreach my $var (@{$s->{d}}) {
    print $var, "\n";
}

print Dumper($s);

実行してみる

% chmod u+x ~/sample.pl
% perl -wc sample.pl 
sample.pl syntax OK
% perl -wc Sample.pm 
Sample.pm syntax OK
% ./sample.pl
1
a
B
A
B
C
$VAR1 = bless( {
                 'c' => 'B',
                 'a' => 'changed',
                 'b' => '2',
                 'd' => [
                          'A',
                          'B',
                          'C'
                        ]
               }, 'Sample' );