perl 读取文本文件 跳过开头1行或几行 (perl read file skip first line or a few lines)

一直在想办法,如何在perl读取文本文件时,跳过第一行(采用更好的方法)。上网搜了搜,发现有不少人回答类似的问题,但是方法都不尽如人意。
现将网上的一些常见方法罗列下(虽然还有其它写法,但是它们在本质上都是一些)。
比如说,


open( FH, $yourfile ) or die "Can't open $yourfile: $!\n";
while( <FH> ){
next if /pattern_indicating_line_to_skip/;
# otherwise, do stuff...
}



open FILE, $somefile;
foreach (<FILE>)
{
if (/some_regex/)
{
$want_the_next_line = <FILE>;
$want_the_next_line_after_that = <FILE>;
}
}



$line = 0;
while(<IN>) {
if ($line <= N) {
} else {
do something
}
}


以上方法虽然都正确,但是细心的你一定发现了问题。假如我的文本有 1万 行,如果仅仅是为了跳过开头的1行,就在循环中加入了 if 条件,那么余下的 9999 行代码岂不是都白白的进行了无用的比较?

有没有更好的办法呢?

其实办法很简单,只是都被我们忽略了。当我再次google时,在一篇文章中得到了答案。我觉得这个办法挺好的。不知道大家有没有什么其它意见或有更好的办法,欢迎大家回复你的最佳答案。 哈哈哈 :)


open( READ, "<$file" );
readline READ; # skip the first line
while (<READ>) {
my ( $id, $axis1, $axis2, $axis3, $value ) = split /\t/;

$line = sprintf ( "%d\t%d\t%d\t%d\t%d\t%d\n",
$id, $axis1, $axis2, $axis3, $value, $axis1 + $axis2 );
print WRITE $line;
}
close READ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值