Ваш вывод поступает из этого раздела вашего кода:
while(<::DBCMD>){
print "$_";
}
Файловый дескриптор ::DBCMD
подключен к выходу вашей команды sqsh
.Ваш код читает каждую запись из этого дескриптора файла и печатает ее в STDOUT
.
Если вы хотите сделать что-то более умное с выводом, то вам придется хранить данные в какой-то структуре данных(вероятно, массив в этом случае) и манипулируйте этим.
Я ожидаю, что вы хотите что-то вроде этого:
my @data;
while (<::DBCMD>) {
chomp; # remove the newline
push @data, $_;
}
# And then:
print join(',', @data), "\n";
Чтобы напечатать точный вывод, который вы запрашиваете, вам потребуется это:
print '(', join(',', map { qq["$_"] } @data), ")\n";
Но я должен спросить ... почему вы так усложняете свою жизнь, манипулируя данными, полученными с sqsh
?Вы действительно должны взглянуть на библиотеку интерфейса базы данных Perl, DBI .Это сделает вашу жизнь намного проще.
Несколько других советов:
- Всегда используйте
use strict
и use warnings
в вашем коде.И исправьте проблемы, которые они выявят. - Используйте встроенные в Perl инструменты даты и времени вместо того, чтобы указывать
date
. - Использование
::
в вашем дескрипторе файла голого слова ничего не дает.Просто DBCMD
работает так же и менее запутанно.