Thread View: pl.comp.lang.perl
4 messages
4 total messages
Started by Bogumila Zawistowska
Mon, 08 Dec 1997 10:59
browser w perlu , exec
Author: Bogumila Zawistowska
Date: Mon, 08 Dec 1997 10:59
Date: Mon, 08 Dec 1997 10:59
10 lines
907 bytes
907 bytes
Pisze programik exec "nazwa hosta 80|tee nazwa_pliku"; #aby zapisac wszelkie komunikaty programu do nazwa_pliku print"GET/index.html" wsszystko to dziala recznie , ale sesja telneta nie nie czyta tego co napisane po print -- http://wizard.ae.krakow.pl/~kni lech z
Re: browser w perlu , exec
Author: Mariusz Krukowski
Date: Mon, 08 Dec 1997 11:28
Date: Mon, 08 Dec 1997 11:28
16 lines
1103 bytes
1103 bytes
Bogumila Zawistowska wrote:
>
> Pisze programik
> exec "nazwa hosta 80|tee nazwa_pliku";
^^^^^
Znaczy sie tu mial byc telnet?
> #aby zapisac wszelkie komunikaty programu do nazwa_pliku
> print"GET/index.html"
>
> wsszystko to dziala recznie , ale sesja telneta nie nie czyta tego
> co napisane po print
Nigdy mi sie nie udalo zmusic programu telnet do takiej pracy.
Natomiast bez problemu dziala otwarcie socketa oraz pisanie
i czytanie z niego.
Re: browser w perlu , exec
Author: Piotr Piatkowski
Date: Mon, 08 Dec 1997 11:30
Date: Mon, 08 Dec 1997 11:30
42 lines
1943 bytes
1943 bytes
Bogumila Zawistowska <zawistow@ibm.uci.agh.edu.pl> wrote:
: Pisze programik
: exec "nazwa hosta 80|tee nazwa_pliku";
: #aby zapisac wszelkie komunikaty programu do nazwa_pliku
: print"GET/index.html"
: wsszystko to dziala recznie , ale sesja telneta nie nie czyta tego
: co napisane po print
Ech... Przede wszystkim exec powoduje zastąpienie aktualnego procesu
tym uruchomionym. Więc nic co jest po exec nie ma prawa się wykonać
(chyba że exec się nie powiódł).
Po drugie - jeżeli chcesz pisać do procesu, to trzeba jakoś skierować
dane do jego STDIN. Najprościej zrobić to funkcją open, np. tak:
open( TELNET, "|telnet host 80" ) or die "$!";
print TELNET "GET /index.html";
ale to i tak niewiele da - po pierwsze trudno jest odczytać proces
jednocześnie do pisania i czytania (ale da się - perldoc open2), a po
drugie to zupełnie bez sensu używać do tego telneta.
Najprościej będzie tak:
use IO::Socket;
my $sock = new IO::Socket::INET ( PeerAddr => "www:80",
Proto => "tcp" );
die "$!" if ! defined $sock;
$sock->autoflush( 1 );
$sock->print "GET / HTTP/1.0\n\n";
while(<$sock>) {
print "->$_;
}
--
Piotr Piątkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Re: browser w perlu , exec
Author: Piotr Piatkowski
Date: Mon, 08 Dec 1997 13:08
Date: Mon, 08 Dec 1997 13:08
42 lines
2041 bytes
2041 bytes
Bogumila Zawistowska <zawistow@ibm.uci.agh.edu.pl> wrote:
: Pisze programik
: exec "nazwa hosta 80|tee nazwa_pliku";
: #aby zapisac wszelkie komunikaty programu do nazwa_pliku
: print"GET/index.html"
: wsszystko to dziala recznie , ale sesja telneta nie nie czyta tego
: co napisane po print
Ech... Przede wszystkim exec powoduje zastąpienie aktualnego procesu
tym uruchomionym. Więc nic co jest po exec nie ma prawa się wykonać
(chyba że exec się nie powiódł).
Po drugie - jeżeli chcesz pisać do procesu, to trzeba jakoś skierować
dane do jego STDIN. Najprościej zrobić to funkcją open, np. tak:
open( TELNET, "|telnet host 80" ) or die "$!";
print TELNET "GET /index.html";
ale to i tak niewiele da - po pierwsze trudno jest odczytać proces
jednocześnie do pisania i czytania (ale da się - perldoc open2), a po
drugie to zupełnie bez sensu używać do tego telneta.
Najprościej będzie tak:
use IO::Socket;
my $sock = new IO::Socket::INET ( PeerAddr => "www:80",
Proto => "tcp" );
die "$!" if ! defined $sock;
$sock->autoflush( 1 );
$sock->print( "GET / HTTP/1.0\n\n");
while(<$sock>) {
print "->$_;
}
--
Piotr Piątkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads