当前位置:  开发笔记 > 编程语言 > 正文

如何在Perl中搜索特定列?

如何解决《如何在Perl中搜索特定列?》经验,为你挑选了2个好方法。

我有一个包含一些数据的文本文件.我试图ID列中搜索EA 并打印整行.但代码识别所有EA并打印所有行.我应该添加什么代码来满足条件?再次感谢:-)!

数据:
姓名年龄ID
---------------------
KRISTE,22,EA 2008
J EA N,21,ES4567
JAK,45,EA 2008

代码打印:
KRISTE ,22,EA 2008
J EA N,21,ES4567
JAK,45,EA 2008

期望的输出:
KRIS,22,EA 2008
Kane,45,EA 2008,

file='save.txt';
open(F,$file)||die("Could not open $file");
while ($line=){
if ($line=~ m/$EA/i) {
my @cells=($f1,$f2,$f3)= split ',',$line;
print "f1";
print "f2";
print "f3";
}

Jonathan Lef.. 8

brian和Jeremy的代码组合修复了所有问题:

use strict;
use warnings;

my $file = 'save.txt';
open my $fh, "<", $file or die "Could not open $file: $!";

while ($line = <$fh>)
{
    my($f1, $f2, $f3) = split ',', $line;
    if ($f3 =~ m/EA/i)
    {
        print "$f1";
        print "$f2";
        print "$f3";
    }
}

Brian已经将匹配模式概括为use CGI;my $EA = param('keyword');但是我解除了,因为我没有看到它适用于这个问题.



1> Jonathan Lef..:

brian和Jeremy的代码组合修复了所有问题:

use strict;
use warnings;

my $file = 'save.txt';
open my $fh, "<", $file or die "Could not open $file: $!";

while ($line = <$fh>)
{
    my($f1, $f2, $f3) = split ',', $line;
    if ($f3 =~ m/EA/i)
    {
        print "$f1";
        print "$f2";
        print "$f3";
    }
}

Brian已经将匹配模式概括为use CGI;my $EA = param('keyword');但是我解除了,因为我没有看到它适用于这个问题.



2> brian d foy..:

您应该发布用于说明问题的实际示例程序.这是你的清洁程序:

use strict;
use warnings;

use CGI;

my $EA = param('keyword');

my $file = 'save.txt';
open my $fh, "<", $file or die "Could not open $file: $!";

while( $line=<$fh> ) {
   if( $line=~ m/$EA/i ) {
       my( $f1, $f2, $f3 ) = split ',', $line;
       print "$f1";
       print "$f2";
       print "$f3";
       }
   }

这里有一些可以帮到你的东西.

你的变量需要他们的印记.没有他们,他们什么都不做.

当您尝试打开文件并想要报告错误时,请包含$!变量,所以你看到错误是什么.

您可以直接拆分为标量变量.这只是一个列表分配.您不需要额外的@cell变量.

使用一些空格为你的陈述提供一些呼吸空间.毕竟,它是免费的.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有