我正在尝试将以下python程序移植到perl5:
import numpy as np
class Hensuu:
def __init__(self, data):
self.data = data
class Kansuu:
def __call__(self, input):
x = input.data
y = x ** 2
output = Hensuu(y)
return output
x = Hensuu(np.array(9.0))
f = Kansuu()
y = f(x)
print(type(y))
print(y.data)<类'main.Hensuu'> 81.0
Hensuu.pm
package Hensuu;
use strict;
use warnings FATAL => 'all';
our $version = 1.0.0;
sub new {
our ($class,$data) = @_;
my $self = {data=>$data};
bless $self,$class;
return $self;
}
1;step1.pl
#!perl
use strict;
use warnings FATAL => 'all';
use Hensuu;
use PDL;
use PDL::Matrix;
my $datas = mpdl [[1.0,2.0],[3.0,4.0]];
my $x = Hensuu->new($datas);
print($x=>$datas);Kansuu.pm
package Kansuu;
#use strict;
use warnings FATAL => 'all';
use Hensuu;
sub call {
my ($self,$input) = @_;
my $x = {$input => $data};
#print($x);
my $y = $x ** 2;
my $output = Hensuu->new($y);
return($output);
}
1;step2.pl
#!perl
#use strict;
use warnings FATAL => 'all';
use PDL;
use PDL::Matrix;
use Hensuu;
use Kansuu;
my $a = mpdl [9.0];
my $x = Hensuu->new($a);
#my $f = Kansuu;
#my $y = $f->call($x);
my $y = Kansuu->call($x);
print($x=>$a);
print(ref($y));
print($y);发射(第2.pl步)
Hensuu=HASH(0x1faf80)
[
[9]
]
HensuuHensuu=HASH(0x25b71c0)
Process finished with exit code 0上面的程序(第2.pl步),我想设置为"81“与打印($y);但我不能。环境是Windows10pro,草莓perl PDL版本(5.32.1.1),IDE是intellij社区版perl插件(2020.3)。
发布于 2021-02-25 16:17:08
Hensuu.pm:
package Hensuu;
use strict;
use warnings;
sub new {
my ($class, $data) = @_;
return bless {data => $data}, $class
}
sub data {
my ($self) = @_;
return $self->{data}
}
1Kansuu.pm:
package Kansuu;
use strict;
use warnings;
use Hensuu;
sub call {
my ($input) = @_;
my $x = $input->data;
my $y = $x ** 2;
my $output = Hensuu->new($y);
return $output->data
}
1步骤2.pl:
#!perl
use strict;
use warnings;
use feature qw{ say };
use PDL;
use PDL::Matrix;
use Hensuu;
use Kansuu;
my $p = mpdl [9.0];
my $x = Hensuu->new($p);
my $y = Kansuu::call($x);
say $y;our变量。$a作为词法变量,它是排序中使用的一个特殊变量。https://stackoverflow.com/questions/66372019
复制相似问题