URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 56149
[ Назад ]

Исходное сообщение
"Помогите с массивом в perl "

Отправлено Maxim Milyh , 03-Май-05 17:18 
есть скрипт который читает файл и пишет его в базу
#!/usr/bin/perl -w
use DBI;
use Getopt::Std;
use POSIX qw(strftime);
$DB_NAME    = 'XXXXX';
$DB_USER    = 'XXXXXX';
$DB_PASS    = 'XXXXX';
$DETAIL     = 'templog';
open DETAIL, "<$DETAIL";
$dbh   = DBI->connect("DBI:Pg:dbname=$DB_NAME", $DB_USER, $DB_PASS);
$sth   = $dbh->prepare("insert into logs (msg) values(?) ;");
$|=1;
while (<DETAIL>)
  {
  chomp;
  @lines=split(' ');
    $msg = $lines[7];
    $sth->execute(
$msg) || die "cannot transfer data";
  }
$dbh->disconnect;
не могу задать интервал например [7..15], то есть из массива выделить несколько частей.На входе лог файл с буквами и цифрами.Если делать без базы и файла а просто создать массив цифровой, то все работает если указать [7..15], подскажите что не так делаю.

Содержание

Сообщения в этом обсуждении
"Помогите с массивом в perl "
Отправлено qwerty , 03-Май-05 19:30 
@newarray=@old_array[7..15];

поищи инфу в гугле по срезам массивов вперле


"Помогите с массивом в perl "
Отправлено Skif , 07-Май-05 01:03 
>есть скрипт который читает файл и пишет его в базу
>#!/usr/bin/perl -w
>use DBI;
>use Getopt::Std;
>use POSIX qw(strftime);
>$DB_NAME    = 'XXXXX';
>$DB_USER    = 'XXXXXX';
>$DB_PASS    = 'XXXXX';
>$DETAIL     = 'templog';
>open DETAIL, "<$DETAIL";
>$dbh   = DBI->connect("DBI:Pg:dbname=$DB_NAME", $DB_USER, $DB_PASS);
>$sth   = $dbh->prepare("insert into logs (msg) values(?) ;");
>$|=1;
>while (<DETAIL>)
>  {
chomp $_;
@lines=split(/[\s\t]+/,$_);
$msg = $lines[7];
  $sth->execute($msg) || die "cannot transfer data";
  }
$dbh->disconnect;

==== [\s\t]+ будет включать все последовательности пробельных символов и символов табуляций.
напрмер пробел обозначим симолом подчеркивания _ тогда
word_word_word__word
При твоем разбивании разобьет не на четыре слова, а на пять, четвертое будет иметь значение undef


"Помогите с массивом в perl "
Отправлено aidmax , 07-Май-05 11:29 
>>есть скрипт который читает файл и пишет его в базу
>>#!/usr/bin/perl -w
>>use DBI;
>>use Getopt::Std;
>>use POSIX qw(strftime);
>>$DB_NAME    = 'XXXXX';
>>$DB_USER    = 'XXXXXX';
>>$DB_PASS    = 'XXXXX';
>>$DETAIL     = 'templog';
>>open DETAIL, "<$DETAIL";
>>$dbh   = DBI->connect("DBI:Pg:dbname=$DB_NAME", $DB_USER, $DB_PASS);
>>$sth   = $dbh->prepare("insert into logs (msg) values(?) ;");
>>$|=1;
>>while (<DETAIL>)
>>  {
> chomp $_;
>@lines=split(/[\s\t]+/,$_);
> $msg = $lines[7];
>  $sth->execute($msg) || die "cannot transfer data";
>  }
>$dbh->disconnect;
>
>==== [\s\t]+ будет включать все последовательности пробельных символов и символов табуляций.
>напрмер пробел обозначим симолом подчеркивания _ тогда
>word_word_word__word
>При твоем разбивании разобьет не на четыре слова, а на пять, четвертое
>будет иметь значение undef
Всем большое спасибо

"Помогите с массивом в perl "
Отправлено jonatan , 07-Май-05 14:52 
>==== [\s\t]+ будет включать все последовательности пробельных символов и символов табуляций.
Сори, но ведь \s включает и табуляцию (\r, \t, \n, \f). Зачем отдельно указывать \t?