main.pl :
#!/usr/bin/perl
use strict;
use warnings;
use v5.14;
use ReadData;
my $read = ReadData->new();
my @name = $read->getNames();
$read->printNames(@name);
ReadData.pm :
#!/usr/bin/perl
package ReadData;
use strict;
use warnings;
use v5.14;
#
sub new {
my $class = shift;
my $self = {};
bless $self, $class;
return($self);
}
sub getNames {
# read in data
my @data;
print "\nName of first matrix? ";
chomp($data[0] = <>);
print "\nName of second matrix? ";
chomp($data[1] = <>);
return(@data);
}
sub printNames {
my @name = @_;
print "\nname1: " . $name[0];
print "\nname2: " . $name[1];
}
1;
メイン プログラムの別のバージョンにこれらのサブルーチンがあり、そこではすべて正常に動作します。私はオブジェクトを呼び出さず、下に見られるように入力名は出力に正しく反映されます:
my @name = getNames();
printNames(@name);
sub getNames { same as above . . . }
sub printNames{ same as above . . . }
一番上に貼り付けたコードは、実行されて出力が得られるため、技術的には機能しますが、出力は正しくありません。
ファースト ネームに「A」、セカンド ネームに「B」と入力すると、次のように返されます。
>>> perl alt.pl
Name of first matrix? A
Name of second matrix? B
name1: ReadData=HASH(0x1d082f0)
name2: A
誰でもこれを修正するのを手伝ってもらえますか? 私はオンラインで 50 ほどの perl チュートリアルを読んでいますが、自分がやるべきことについて頭を整理することができません。私の他の唯一の実際のプログラミング経験は Java での OOP であり、この perl コンストラクターには従いません。. .