Dosya tanıtıcılarını bellekte açabilirsiniz?Bellek içindeki dosyaları açmak ne demektir?
Bellek içi kısmı açık değil, bunun anlamı ne?
Bu, bilgisayarın belleğini kullanabileceğiniz anlamına gelirse, zaten böyle çalışmıyor mu?
Dosya tanıtıcılarını bellekte açabilirsiniz?Bellek içindeki dosyaları açmak ne demektir?
Bellek içi kısmı açık değil, bunun anlamı ne?
Bu, bilgisayarın belleğini kullanabileceğiniz anlamına gelirse, zaten böyle çalışmıyor mu?
Bu, skaler değişkenlere yazmak ve okumak için filehandles kullanabileceğiniz anlamına gelir.
my $var = "";
open my $fh, '>', \$var;
print $fh "asdf";
close $fh;
print $var; # asdf
Sonuçta bu
$var .= "asdf"
Yapılacaklar sadece One More yoldur ama daha uygun veya dize manipülasyon paradigmaların daha dt paradigmalar kullanmak daha uygun olduğu bağlamlar vardır.
open my $fh, '>', $logfile;
...
print $fh $some_message_to_be_logged;
... 500 more print $fh statements ...
close $fh;
Ama biliyorum:
Örneğin, bu kod ile başlar? onlar diske yazılır önce Şimdi doğrusu ben
$logvar .= $some_message_to_be_logged
ama için bütün print
ifadeleri değişebilir vb onları manipüle belki böylece onlara arama yapabilirsiniz, bir skaler değişken sonra günlük iletileri kaydetmek istiyorum Bu durumda sadece open
ifadesini değiştirmek daha uygun olur.
open my $fh, '>', \$logvar
Filehandles'i doğrudan skaler değişkenlere açabilirsiniz. Özellikle bir dosya gibi davranması gereken bir şey olduğunda yararlıdır, ancak diskte bir tane istemezsiniz. Bu örnek, perldoc alınır:
close STDOUT;
open(STDOUT, ">", \$variable)
or die "Can't open STDOUT: $!";
Bu STDOUT kapatır ve daha sonra $variable
bağlı yeniden açar.
Bunu nereden okuyorsunuz? Yanıltıcıdır, çünkü bir dosya tanıtıcısı * her zaman bir bellek içi yapıdır. Büyük olasılıkla dosya tanıtıcılarını doğrudan Perl skalar değişkenlerine (bellekte olan) açmaya atıfta bulunur. – Borodin
evet, yorumunuz doğru, bu demek istediğim – airnet
'perldoc -f open' gibi" bellek içi dosyalar "olarak adlandırılır – mob