-1

私はPerlオブジェクトを学んでいました。モジュールファイルcreate_schedules.pmに簡単なコンストラクターを書きました。

#!/usr/bin/perl -w
#
package create_schedules;
use strict;
use warnings;
use diagnostics;
sub new {
    my $class = shift;
    my %params = @_;
    my $self=bless{
        _para1=>$params{'mypara1'},
        _para2=>$params{'mypara2'}
        },$class;
    return $self;
}
1;

メインファイルmain.plにオブジェクトを作成しています:

#!/usr/bin/perl -w
use strict;
use warnings;
use diagnostics;

use lib::my_module;

sub _start(){
    print "Main Function Started\n";
    create_schedules::new( 
        'mypara1' => 'This is mypara1', 
        'mypara2' => 'This is mypara2',
        );
}
_start();

main.pl を実行するとすぐに、次のエラーが発生しました。

Main Function Started
 Odd number of elements in hash assignment at lib/create_schedules.pm line 9 (#1)
 (W misc) You specified an odd number of elements to initialize a hash,
 which is odd, because hashes come in key/value pairs.
4

2 に答える 2

5

次のように呼び出すだけです。

create_schedules->new
#   note     ___^^

古い呼び出し方は次のとおりです。

new create_schedules(...);

あなたのコードが間違っている理由:

あなたがやっている新しいメソッドではmy $class = shift;、その後、@_3つの要素のみが含まれます:

  1. 「これは mypara1 です」、
  2. 'mypara2',
  3. 「これは mypara2 です」、

次に、命令my %params = @_;により、要素の数が奇数であるという警告が発生します。

于 2013-09-11T11:30:30.027 に答える