【发布时间】:2010-06-12 05:28:53
【问题描述】:
请先看下面的代码。
#! /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 函数来初始化。然后 可以调用write将字符串“hello word”实际写入文件句柄指示的文件中,假设文件句柄是“write”打开成功的结果。
但是,perl 编译器只是抱怨“打印”行中有语法错误。你们中的任何人都可以告诉我这里有什么问题吗?提前致谢。
【问题讨论】:
-
一些旁注,使用这些命名样式中的任何一种以更好地显示单词分隔:
setFd或set_fd或SetFd。保持一致的大小写风格,write和set_fd或Write和Set_Fd(我建议使用前者)。同样在 Perl 中,它是“文件句柄”而不是“文件描述符”,因此您需要set_fh。最后,打开警告(use warnings或在#!行中添加-w)它会显示构造函数中的错误。 -
另外,
use strict,因为它会在这行代码$self_->{_fd} = $fd;中显示这个非语法但可能不是你的意思的错误 -
@Schwern:感谢您的建议。
标签: perl filehandle