我不知道该把它们放入单独命名的变量是最好的选择,但客户永远是对的:
use strict;
use warnings;
my $data_read = "T=3420499518 A=914 B=97 C=49 D=436 E=428 F=863 G=34 H=771 I=214 J=493 K=165";
my $data = $data_read;
$data =~ s/[A-KT]=//g;
print "$data\n";
my($T,$A,$B,$C,$D,$E,$F,$G,$H,$I,$J,$K) = split /\s+/, $data;
my $query = "INSERT INTO myhouse (T,A,B,C,D,E,F,G,H,I,J,K) VALUES\n" .
"($T,$A,$B,$C,$D,$E,$F,$G,$H,$I,$J,$K)";
print "$query\n";
print "\nAlternative:\n";
my(@list) = split /\s+/, $data;
print "@list\n";
my $query2 = "INSERT INTO myhouse (T,A,B,C,D,E,F,G,H,I,J,K)\nVALUES(" .
join(",", @list) . ")";
print "$query2\n";
当这个片段它会生成:
3420499518 914 97 49 436 428 863 34 771 214 493 165
INSERT INTO myhouse (T,A,B,C,D,E,F,G,H,I,J,K) VALUES
(3420499518,914,97,49,436,428,863,34,771,214,493,165)
Alternative:
3420499518 914 97 49 436 428 863 34 771 214 493 165
INSERT INTO myhouse (T,A,B,C,D,E,F,G,H,I,J,K)
VALUES(3420499518,914,97,49,436,428,863,34,771,214,493,165)
脚本的后半部分显示了一个更简单的ALT使用数组来保存读取的值。
显然,如果您愿意,您可以检查是否将值分配给了所有变量以及其他此类错误检查。
你不应该在查询插值变量。改为使用[占位符](http://search.cpan.org/perldoc?DBI#Placeholders_and_Bind_Values)。 – TLP
如果它们都是数字,那么没有太大的危险,但是应该完成验证它们都是数字。 –