Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Выдача на STDOUT


Автор: tishaishii 22.2.2007, 21:48
Воюю с IndigoStar perl2exe. Оно не хочет хорошо компилить DBD::ODBC и Win32::ODBC. Главная цель - закрыть код.
Придумал писать <DATA> в темповский файл и исполнять его, после - удалять. Не сильно хороший вариант, но работает.
Скрипт после DATA печатает по-ходу работы всякие-разные строчки, но основная программа печатает всё это только после завершения проги после DATA.

Задача в том, чтобы писать realtime (в реальном времени) строчки, которые выдаёт программа после DATA.
Код
$|=1;

my($dir)=grep length, @ENV{+qw(TEMP TMP)};
die "System error #1\n" unless $dir;
my$tmp=$dir."\\".time;
open my$fh, '>'.$tmp;binmode $fh;print $fh <DATA>;close $fh;
print foreach `perl ${tmp}`;
unlink $tmp;

__END__
use Win32::ODBC;
use Win32::Clipboard;
use IO::Handle;
use DBI;
#..........


Автор: Nab 23.2.2007, 00:36
По моему Есть модули в иерархии Acme::* на CPAN для шифрования исходников, мож кто подскажет точное имя модуля...

Добавлено @ 00:38 
Вот еще раз глянул и нашел
Acme::Enc

Автор: tishaishii 23.2.2007, 06:31
Я подумал, скорее мне не шифрование надо, мне надо выдачу в реальном времени в STDOUT с другого скрипта (вообще с вызова system). Абсфуцировать код я и сам смогу.

Автор: tishaishii 23.2.2007, 07:16
Ладно, вспомнил и нашёл решение:
Код

$|=1;

my($dir)=grep length, @ENV{+qw(TEMP TMP)};
die "System error #1\n" unless $dir;
my$tmp=$dir."\\".time;
open my$fh, '>'.$tmp;binmode $fh;print $fh <DATA>;close $fh;
open my$fh, "|perl ${tmp}";binmode $fh;
print <$fh>;
close $fh;
unlink $tmp;

__END__
$|=1;
my$i=10;
while($i--) {
    print $i, "\n";
    sleep 2;
}

Автор: tishaishii 27.2.2007, 21:38
Да, работает мой вариант.
Но как, всё-таки, преодолеть вариант DBD::ODBC и Win32::ODBC одновременно, да ещё не расставаясь с perl2exe?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)