当我创建2个单独的Perl对象实例时,第二个实例将覆盖第一个实例的数据.我是OO Perl的新手,所以我觉得我在如何处理类中的$ self变量时缺少基本的东西.为什么$ ptr2对象的数据会覆盖$ ptr1对象的数据?它可能只是Perl专家的一分钟答案,但我一直在为此而努力.我的实际应用程序应该从不同来源获取大量数据并运行一些数据分析,因此我在下面的内容是一个简化版本来显示手头的问题.
我确实检查了与下面相同主题相关的另一个问题,但它似乎与我的问题不同.
以下是我在课堂上的内容:
package TestClass;
sub new {
my ($object, $file) = @_;
my $class = ref($object) || $object;
my $self = { myfile => $file, };
bless($self, $class);
return($self);
}
# grabs key-val pairs from file
sub getFileData {
my($self) = @_;
open (FILE, "$self->{myfile}" ) or die "Cannot open\n";
while (my $curline = <FILE>) {
my @fields = split(/\s+/,$curline);
$self{$fields[0]} = $fields[1];
}
close FILE;
}
# prints key-val pairs to stdout …Run Code Online (Sandbox Code Playgroud)