如何遍历list(perl)foreach?

问题描述 投票:-3回答:2

我使用perl时遇到问题。问题是我想在数据库中添加多行。现在我有一个列表,1可以在数据库中插入1行。但只有1因为那时我得到一个错误,因为它不是唯一的。这是真的,但我想添加更多的1行,所以我在互联网上发现我需要使用foreach循环,但我不知道如何。

脚本如下:

sub new{

    local $/; $_ = $text; $match=$_;
    my @splitline = split/\n/, $match;
    foreach my $Sngline(@splitline)
    {
       $bla =  print " $&\n", if($Sngline=~m/^pc([^\s]*)\s/g)
    }

} 


my $db_ora = DBIx::Simple->connect('dbi:Oracle:host=10.42.60.15;sid=centndsa;port=1521','NDSCENTR', 'NDSCENTR');

sub test {

    $db_ora->query("Select TEST1 FROM script");

}

sub ba
    {

    print new();

    $db_ora->query("insert into SCRIPT (TEST1) values(?)", $bla)  or error(DBIx::Simple->error);
    return;
    }

print ba();

print $bla; 

只是做了一些调整以清理事情

my $db_ora = DBIx::Simple->connect('dbi:Oracle:host=10.42.60.15;sid=centndsa;port=1521','NDSCENTR', 'NDSCENTR');
sub new{

my $db_ora = DBIx::Simple->connect('dbi:Oracle:host=10.42.60.15;sid=centndsa;port=1521','NDSCENTR', 'NDSCENTR');
local $/; $_ = $text; $match=$_;
my @splitline = split/\n/, $match;
foreach my $Sngline(@splitline)
{
   $bla =  print " $&\n", if($Sngline=~m/^pc([^\s]*)\s/g);
   $bla2 =  print " $&\n", if($Sngline=~m/^pc([^\s]*)\s/g);
    $db_ora->query("insert into SCRIPT (TEST1,TEST2) values(?,?)", $bla, $bla2);
    return;
   print $bla;
   print $bla2; 

 }

}
print new();
perl
2个回答
1
投票

这可能是

$db_ora->prepare("insert into SCRIPT (TEST1,TEST2) values(?,?)", $bla, $bla2);
$db_ora->execute();

?


-1
投票

for循环似乎很好。

但是,在循环内if之后缺少分号。

$bla =  print " $&\n", if($Sngline=~m/^pc([^\s]*)\s/g);

在perl中,DO if (CONDITION);可以用于DO作为一行,否则if ( ){}

此外,就我在这里看到的而言,$ bla似乎是未宣布的。

© www.soinside.com 2019 - 2024. All rights reserved.