Я написал пару модулей оболочки Perl для инструмента C #.Идея состоит в том, что скрипт передаст имя устройства, номер порта и адрес сервера, которые используются для установления коммуникационного сокета.Когда я пишу сценарий для использования этих модулей, я получаю сообщение "Ошибка компиляции требует ошибки
"Can't call method "_serveraddr" on an undefined value at Device.pm line 23.
Compilation failed in require at Launch.pl line 11.
BEGIN failed--compilation aborted at Launch.pl line 11."
Launch.pl
use Device;
use System;
my ( $serverAddress, $port, $reportFile ) = @_;
my $System = new System($serverAddress, $port);
my $dut = new Device('DEV',127.0.0.1,5000);
Device.pm
package Device;
use strict;
use warnings;
use Command;
use Comm;
sub new {
my $class = shift;
my $self = {
_device => shift,
_serveraddr => shift,
_port => shift
};
bless $self, $class;
return $self;
}
my $SockObj = Comm->new( $self->_serveraddr, $self->_port );
my $ComObj = Comm->new();
sub Action1 {
my ( $self, $x, $y ) = @_;
my $tmp = {
'hash1' => 'Command',
'value1' => $x,
'value2' => $y,
'Device' => $self->{_device}
};
$InputRequest = $ComObj->CreateInputString($tmp);
$SockObj->WriteInfo($InputRequest);
my $Response = $SockObj->ReadData();
$ComObj->TapResponse($Response);
}
System.pm
package System;
use strict;
use warnings;
use Comm;
use Command;
my $SockObj = Comm->new();
my $ComObj = Command->new();
sub new {
my $class = shift;
my $self = {
_serveraddr => shift,
_port => shift
};
bless $self, $class;
return $self;
}
Может кто-нибудь, пожалуйста, помогите .. Я понятия не имею, как двигаться вперед .. Пожалуйста, дайте мне знать, если вопрос неясен ..
Я думаю, что проблема в том,что в этой строке
my $SockObj = Comm->new( $self->_serveraddr, $self->_port );
$ self содержит неопределенное значение.Как мне это исправить ??Более того, я новичок в Perl и не знаю, сможем ли мы получить доступ к атрибутам объекта с помощью хэша.