我正在尝试使用基于目录列表的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'变量有关,但我不能指责它。至于“%”被撞到一排,我不知道。
答案 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";
}