請先看下面的代碼。如何在Perl類中存儲和訪問文件句柄?
#! /usr/bin/perl
package foo;
sub new {
my $pkg = shift;
my $self = {};
my $self->{_fd} = undef;
bless $self, $pkg;
return $self;
}
sub Setfd {
my $self = shift;
my $fd = shift;
$self_->{_fd} = $fd;
}
sub write {
my $self = shift;
print $self->{_fd} "hello word";
}
my $foo = new foo;
我的意圖是使用散列來存儲文件句柄。文件句柄首先是未定義的,但可以通過調用Setfd函數來啓動。那麼可以調用 寫實際將字符串「hello word」寫入文件句柄指示的文件,假定文件句柄是成功「寫入」打開的結果。
但是,perl編譯器只是抱怨在「打印」行中有語法錯誤。你們誰能告訴我這裏有什麼問題嗎?提前致謝。
一些旁註,使用任何這些命名樣式,以便更好地顯示文字的分離:'setFd'或'set_fd'或'SetFd'。保持一致的大寫形式,無論是'write'和'set_fd'還是'Write'和'Set_Fd'(我都建議前者)。另外在Perl中,它的「文件句柄」不是「文件描述符」,所以你需要'set_fh'。最後,打開警告('使用警告'或在'#!'行中放一個'-w')它會在你的構造函數中顯示錯誤。 – Schwern 2010-06-12 05:57:05
此外,'use strict',因爲它會在這行代碼中顯示這個非語法但可能不是你的意思的錯誤$ self _-> {_ fd} = $ fd;' – 2010-06-13 02:11:52
@ Schwern:謝謝你的建議。 – 2010-06-13 03:18:59