Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > IPC::вывод данных в дочерный процесс


Автор: tcg2 26.9.2006, 15:27
Добрый ден, подскажите добры люди...
Хотелось бы результат выше неупоменатого кода, чтобы поступил в качестве содержание e-maila, ниже)
Каким образом это можно реализовать в одном файле, а не в двух разных


................
use Net::SMTP;
use Sys::Hostname;
$hostname = hostname();



if(open(CHILDHANDLE,"|-") {     #эта строка сюда пишется или где-то выше

while (<CHILDHANDLE>) {
$smtp = Net::SMTP->new('IP...');
$smtp->mail('mail...');
$smtp->to('mail...');
$smtp->data();
$smtp->datasend("From: $hostname");
$smtp->datasend("\n");
$smtp->datasend("To: Name...");
$smtp->datasend("\n");
$smtp->datasend("Subject: ....");
$smtp->datasend("\n");
$smtp->datasend(<CHILDHANDLE>);
$smtp->dataend();
$smtp->quit;

close(CHILDHANDLE);
}

Автор: nitr 26.9.2006, 16:31
Цитата(tcg2 @  26.9.2006,  15:27 Найти цитируемый пост)
Хотелось бы результат выше неупоменатого кода

это что за каламбур??

конкретизируйте проблему!

Автор: tcg2 26.9.2006, 17:00
Извините за ошибку!
Хотелось бы имя машин, логин и все такое, которое находится в первой части программ, чтобы отправлялось по e-mail

Результат кода дает: " '-' is not recognized as an internal or external command operable program or batch file"
========================================
#!c:\Perl\bin\perl.exe

print "\n";
print "\n";

use Sys::Hostname;
$hostname = hostname();
print "=" x 16, $hostname,"=" x 16 ,"\n";
use Time::localtime;
$tm = localtime;
$tma = localtime;
printf("%04d-%02d-%02d", $tm->year+1900, ($tm->mon)+1, $tm->mday);
printf("\t\t\t\t\t%02d:%02d:%02d\n", $tma->hour, $tma->min, $tma->sec);
$gnadd = gethostbyaddr($iaddr,AF_INET);
print "\nLogon to: ",getlogin;
print "\nMachine name: ",$gnadd, "\n";


use Net::SMTP;
use Sys::Hostname;
$hostname = hostname();



if(open(CHILDHANDLE,"|-") {     #эта строка сюда пишется или где-то выше

while (<CHILDHANDLE>) {
$smtp = Net::SMTP->new('IP...');
$smtp->mail('mail...');
$smtp->to('mail...');
$smtp->data();
$smtp->datasend("From: $hostname");
$smtp->datasend("\n");
$smtp->datasend("To: Name...");
$smtp->datasend("\n");
$smtp->datasend("Subject: ....");
$smtp->datasend("\n");
$smtp->datasend(<CHILDHANDLE>);
$smtp->dataend();
$smtp->quit;

close(CHILDHANDLE);
} 

Автор: amg 27.9.2006, 13:23
Иногда нужно с минимальной переделкой скрипта добиться, чтобы скрипт посылал мейлом то, что печатает на консоль. Не это ли требуется? Если да, то могу как-то помочь. А если нужно организовать именно некое хитрое IPC с перенаправлением потоков, то тут уж сами...

Автор: tcg2 27.9.2006, 13:33
Д нет, просто нужно имя компьютера и все такое которое определяется в первой части программы, чтобы служило как -datasend- при отправке почтой, с второй(нижней части программы) Спасибо!

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