Lütfen önce aşağıdaki koda bakın.Perl sınıfında bir dosya kitaplığını nasıl kaydedebilir ve bunlara erişebilirim?
#! /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;
Amacım, bir sınıfa hash kullanarak bir dosya tanıtıcısı depolamaktır. dosya tanıtıcısı ilk başta tanımlanmamıştır, ancak Setfd işlevini çağırarak sonradan başlatılabilir. yazımı, dosya tanıtıcısının "başarılı" bir açıklamanın sonucu olduğu varsayıldığından, dosya tanıtıcısı tarafından gösterilen bir dosyaya "merhaba sözcük" dizesini yazmak için çağrılabilir.
Ancak, perl derleyicisi, "yazdırma" satırında sözdizimi hatası olduğunu bildirir. Biriniz bana burada neyin yanlış olduğunu söyleyebilir mi? şimdiden teşekkürler.
bazı yan notları, daha iyi göstermek kelime ayrılması için bu adlandırma stilleri herhangi kullanımı: 'setFd' ya da 'set_fd' ya da' SetFd'. Tutarlı bir büyük harf kullanmaya devam edin, 'write' ve 'set_fd' ya da' Write' ve 'Set_Fd' (eskileri öneririm). Ayrıca Perl'de bir "dosya tanıtıcısı" değil "dosya tanıtıcı" değil, yani set_fh 'yi istersiniz. Son olarak, uyarıları açın ('uyarıları kullan' veya '#' satırına '-w' yazın) yapıcınızdaki bir hatayı ortaya çıkarır. – Schwern
Ayrıca, 'use use ', bu sözdizimsel olmayan-fakat-muhtemelen-ne demek istemediğinizi bu hata satırında ortaya çıkardığı gibi' $ self _-> {_ fd} = $ fd; ' –
@ Schwern: tavsiyen için teşekkürler. –