我有一个包含一些数据的文本文件.我试图仅在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');
但是我解除了,因为我没有看到它适用于这个问题.
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');
但是我解除了,因为我没有看到它适用于这个问题.
您应该发布用于说明问题的实际示例程序.这是你的清洁程序:
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变量.
使用一些空格为你的陈述提供一些呼吸空间.毕竟,它是免费的.