我要做的是打开这个utf编码文件,从文件中删除匹配字符串并重命名该文件.
码:
use strict;use warnings;use TIE::file;use file::copy;my ($input_file) = qw (test.txt);open my $infh,"<:enCoding(UTF-16LE)",$input_file or dIE "cannot open '$input_file': $!";for (<$infh>) { tIE my @lines,"TIE::file",$_; shift @lines if $lines[0] =~ m/Myheader/; untIE @lines; my ($name) = /^(.*).csv/i; move($_,$name . ".dat");}close $infh or dIE "Cannot close '$input_file': $!";
代码:(更新)
my ($input_file) = qw (test.txt);my $qfn_in = $input_file;my $qfn_out = $qfn_in . ".dat";open(my $fh_in,"<:raw:perlio:enCoding(UTF-16le):crlf:utf8",$qfn_in) or dIE("Can't open \"$qfn_in\": $!\n");open(my $fh_out,">:raw:perlio:enCoding(UTF-16le):crlf:utf8",$qfn_out) or dIE("Can't open \"$qfn_out\": $!\n");while (<$fh_in>) { next if $. == 1 && /Myheader/; print($fh_out $_) or dIE("Can't write to \"$qfn_out\": $!");}close($fh_in);close($fh_out) or dIE("Can't write to \"$qfn_out\": $!");rename($qfn_out,$qfn_in) or dIE("Can't rename: $!\n");解决方法
my $qfn_in = ...;my $qfn_out = $qfn_in . ".tmp";open(my $fh_in,$qfn_out) or dIE("Can't open \"$qfn_out\": $!\n");while (<$fh_in>) { next if $. == 1 && /Myheader/; print($fh_out $_) or dIE("Can't write to \"$qfn_out\": $!");}close($fh_in);close($fh_out) or dIE("Can't write to \"$qfn_out\": $!");rename($qfn_out,$qfn_in) or dIE("Can't rename: $!\n");
(:perlio和:utf8是当时存在的BUG的解决方法.)
总结以上是内存溢出为你收集整理的使用perl tie :: file和utf编码文件全部内容,希望文章能够帮你解决使用perl tie :: file和utf编码文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)