:1987 Misha Pypkin 2556677
1988 Oleg Muronov 2335577
...
Код: Выделить всё
#!/usr/bin/perl
use DBI;
$db_user = 'anonymous';
$db_pass = 'mysql';
$db_info = 'DBI:mysql:users:localhost';
$dbh = DBI->connect($db_info, $db_user, $db_pass);
$filepath = "/usr/home/user/local";
opendir (DIR, $filepath) or die print("Error open dir $!");
@userfiles = sort readdir (DIR);
closedir(DIR);
foreach $file (@userfiles)
{
open(USER,"$filepath/$file");
@userdata = <USER>;
foreach $_ (@userdata){
($t1,$t2,$t3,$t4) = split (/ /, $_);
close(USER);
$inserth=$dbh->do(qq{INSERT INTO users(year,name,sname,phone) VALUES (?,?,?,?)}, undef,$t1,$t2,$t3,$t4) or die $dh->errstr;
}
$num++;
}
$counth = $dbh->selectrow_arrayref(qq{SELECT COUNT(*) FROM users }, undef );
print "В таблице $counth->[0] пользователей, $num из которых только что было добавленно. \n\n";
В чем проблема: Если у меня попадается строка с меньшим количеством чем 4 скрипт просто пропускает эту строку, мне нужно что бы добавлялись все строки (пустие поля забить пробелами). Как я это вижу: Читать строку, смотреть сколько в ней полей ($n), если количество полей $n<4 остальные поля забить пробелами, и потом добавлять в БД.
Просто я не очень знаком с Perlom как это реализовать?