windows – 简单的Win32 :: Unicode :: File readline循环和Stra
发布时间:2020-12-14 05:35:49 所属栏目:Windows 来源:网络整理
导读:通过在 Windows XP上运行Strawberry perl 5.12.3.0中的以下代码,可以找到我遇到的问题. #!/usr/bin/perl -w use strict; use warnings; use Win32::Unicode::File; use Encode; my $fname = shift @ARGV; my $fh = Win32::Unicode::File-new; if ($fh-open('
通过在
Windows XP上运行Strawberry perl 5.12.3.0中的以下代码,可以找到我遇到的问题.
#!/usr/bin/perl -w use strict; use warnings; use Win32::Unicode::File; use Encode; my $fname = shift @ARGV; my $fh = Win32::Unicode::File->new; if ($fh->open('<',$fname)){ while (my $line = $fh->readline()){} close $fh; }else{ print "Couldn't open file: $!n"; } 这里唯一发生的事情就是我执行了一条读取线,并且这一直在记忆,直到我从Strawberry perl中得到一个内存不足的错误.我使用的是一个非常大的文件,但由于此代码是基于流的,因此无关紧要.我在这里遗漏了什么,或者在草莓perl的某个地方有泄漏吗?我在ActivePerl中测试了完全相同的代码,并且工作正常,即它不会占用内存. 更新:用普通的菱形运算符替换Win32 :: Unicode :: File似乎至少可以在我的发行版上工作.请参阅以下代码. use strict; use warnings; my $fname = shift @ARGV; if (open(my $fh,'<',$fname)){ while (my $line = <$fh>){} close $fh; }else{ print "Couldn't open file: $!n";} 那么这就表明问题出在Win32 :: Unicode模块上吗? 解决方法
也许$/(或$INPUT_RECORD_SEPARATOR)不是新行?
或$[(第一个数组元素的索引和(子)字符串中的第一个字符)不是0. 在读取或读取线期间,模块使用这两个变量. BTW:它太慢了,因为它使用3个函数调用一次读取每行一个字符,然后为每个读取字符调用Encode :: decode,然后将其添加到readline返回到代码的行缓冲区.呸! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-server-2003 – 什么原因导致重复的ACK记录?
- windows – Bitlocker使用哪些备份策略?
- 如何将软件注册为Windows 7的防病毒软件?
- Win2008 R2 IIS7.5+PHP5(FastCGI)+MySQL5环境搭建教程
- Windows编程,没有可再发行组件
- active-directory – 通过GPO部署软件,但也部署配置文件
- windows-server-2008 – 一个不错的Windows磁带备份程序来取
- .net – 如何在不安装的情况下运行用Microsoft Moles编写的
- .net – 为什么过程映像名称有时会用十六进制字符填充?
- dos语法