加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何使用Perl从文件中删除一行?

发布时间:2020-12-15 23:31:42 所属栏目:大数据 来源:网络整理
导读:我正在尝试从文本文件中删除一行.相反,我已经删除了整个文件.有人可以指出错误吗? removeReservation("john");sub removeTime() { my $name = shift; open( FILE,"times.txt" ); @LINES = FILE; close(FILE); open( FILE,"times.txt" ); foreach $LINE (@LI
我正在尝试从文本文件中删除一行.相反,我已经删除了整个文件.有人可以指出错误吗?

removeReservation("john");

sub removeTime() {
    my $name = shift;

    open( FILE,"<times.txt" );
    @LINES = <FILE>;
    close(FILE);
    open( FILE,">times.txt" );
    foreach $LINE (@LINES) {
        print NEWLIST $LINE unless ( $LINE =~ m/$name/ );
    }
    close(FILE);
    print("Reservation successfully removed.<br/>");
}

示例times.txt文件:

04/15/2012&08:00:00&bob
04/15/2012&08:00:00&john

解决方法

看起来您正在打印到尚未定义的文件句柄.至少你没有在示例代码中定义它.如果启用严格和警告,您将收到以下消息:

Name "main::NEWLIST" used only once: possible typo at remove.pl line 16.

print NEWLIST $LINE unless ($LINE =~ m/$name/);

此代码应该适合您:

#!/usr/bin/env perl 

use strict; 
use warnings; 

removeTime( "john" ); 

sub removeTime { 
    my $name = shift; 

    open( FILE,"<times.txt" ); 
    my @LINES = <FILE>; 
    close( FILE ); 
    open( FILE,">times.txt" ); 
    foreach my $LINE ( @LINES ) { 
        print FILE $LINE unless ( $LINE =~ m/$name/ ); 
    } 
    close( FILE ); 
    print( "Reservation successfully removed.<br/>" ); 
}

还有几点需要注意:

1)当你的意思是removeTime()时你的示例代码调用removeReservation()

2)除非您打算使用prototypes,否则不要在子程序定义中使用圆括号.请参阅上面的示例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读