主要.pl:
#!/usr/bin/perl
use strict;
use warnings;
use v5.14;
use ReadData;
my $read = ReadData->new();
my @name = $read->getNames();
$read->printNames(@name);
读取数据.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 构造函数的东西。. .