跳过文件perl的最后一行

时间:2014-11-21 22:21:23

标签: sql perl while-loop increment

我正在尝试使用基于目录列表的perl生成SQL查询。

数据

file_1.csv
file_2.csv
file_3.csv


CODE

$count = 1;
$files = qr/^.*?$/;
print "select id,Network_Location from data where Network_Location like\n";
while (<>)
{
if ( $_ =~ $files ) {
print "'%".$_."%' OR Network_Location like"."\n";
}
$count++;
}

我的结果

从Network_Location中选择id,Network_Location “%file_1.csv
%'或
“%file_2.csv
%'或
'%file_3.csv%'或

期望的结果

从Network_Location中选择id,Network_Location '%file_1.csv%'或
Network_Location如'%file_2.csv%'或
Network_Location,如'%file_3.csv%'


首先,由于某种原因,我的“%'”正在被撞上一条线。我也不想在文件的最后一行末尾打印“OR”。我正在解析的目录可能包含数百个文件。

有任何帮助吗?我猜这与我的'$ count'变量有关,但我不能指责它。至于“%”被撞到一排,我不知道。

1 个答案:

答案 0 :(得分:3)

$files = qr/^.*?$/;
my @matches;
while (<>)
{
  chomp; # remove end of line characters
  if ( $_ =~ $files ) {
    push @matches, $_; # store match in @matches array
  }
}
if( @matches ) {
   print 
     "select id, Network_Location from data where\n",
     join( " OR\n", map { "Network_Location like '%$_%'" } @matches ),
     "\n";
}