main.pl:如何將子例程轉換爲perl/perl5中的對象/軟件包?
#!/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;
我在主程序的另一個版本這些子程序,和一切工作正常那裏。我不叫的對象,輸入名稱在輸出看到bleow正確反映:
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構造函數。 。 。
啊謝謝!我知道有些東西是我錯過的。 。 。 奇怪的是,我沒有使用任何東西,但這只是一些原型,我測試創建/調用一個新的對象從主腳本導出到新的包/模塊後的子程序。 我沒有任何需要使用/調用該打印方法,它基本上只是在那裏,以確保包/對象工作正常,我什麼也沒有搞亂:P – user1947267 2013-03-22 02:34:22
@ user1947267:不客氣!並且 - 理解。圖形填充代碼並不總是現實的。 :-) – ruakh 2013-03-22 02:40:01