Socket programming muddle

M

mwql

This innocent looking piece of code is suppose to grab a webpage from a
url.
When the script is executed, "use of uninitialized value in print ... "

I've checked my creation of the peer connection with several scripts
and web resources.
I could not notice much differences. However, I am pretty sure that the
fault lies with the
peer connection. The GET command works on telnet and I've ran out of
ideas of where I could
screw up.

Please shed some light on this murky issue, your input are much
appreciated.

=======

#!/usr/bin/perl -w

use Carp;
use Socket;

$file = "www.cs.mu.oz.au/~mwql/index.php";
$add = $1, $file_l = $2 if ($file =~ m#([^/]+)([/].*)#);
$port = 80;

$proto = getprotobyname ('tcp');
print "$add $file_l $port $proto\n";

# Create stream socket
# Get IP address of peer

socket (SOCKET, PF_INET, SOCK_STREAM, $proto) or die "socket not made";

$iadd = inet_aton ($add);

# Get local socket address
# Bind it to our socket

$temp = sockaddr_in (0, INADDR_ANY);
bind (SOCKET, $temp) or die "bind unsuccessful";

# Pack IP address of the peer with the port
# Connect to the peer

$ads = sockaddr_in ($port, $iadd);
connect (SOCKET, $ads) or die "connect unsuccessful";

# Send a sample request
# Receive a initial response

print SOCKET <<"yahoo";
HEAD $file_l HTTP/1.0\r\n
\r\n
yahoo

$cur = <SOCKET>;
print $cur;

=======
 
M

mwql

=======

#!/usr/bin/perl -w

use strict;
use warnings;
use Carp;
use Socket;

my ($file_l, $file, $add, $port, $proto, $iadd, $temp, $ads, $cur);
$file = "www.cs.mu.oz.au/~mwql/index.php";
$add = $1, $file_l = $2 if ($file =~ m#([^/]+)([/].*)#);
$port = 80;

$proto = getprotobyname ('tcp');
print "$add $file_l $port $proto\n";

# Create stream socket
# Get IP address of peer

socket (SOCKET, PF_INET, SOCK_STREAM, $proto) or die "socket not made";

$iadd = inet_aton ($add);

# Get local socket address
# Bind it to our socket

$temp = sockaddr_in (0, INADDR_ANY);
bind (SOCKET, $temp) or die "bind unsuccessful";

# Pack IP address of the peer with the port
# Connect to the peer

$ads = sockaddr_in ($port, $iadd);
connect (SOCKET, $ads) or die "connect unsuccessful";

# Send a sample request
# Receive a initial response

print SOCKET <<"yahoo";
HEAD $file_l HTTP/1.0\r\n
\r\n
yahoo

$cur = <SOCKET>;
print $cur;

=======

"Use of uninitialized value in print at perl/nget/nget.pl line 43."

Yeah, I cannot use LWP or IO::Socket, because those packages are not
available to me and I do not have root permissions. The second post was
made because google didn't update my first post quickly enough, and I
assumed that something screwed up along the way.

Use strict and use warnings did not help with my problem, unfortunately.
 
R

RedGrittyBrick

mwql wrote:

"Use of uninitialized value in print at perl/nget/nget.pl line 43."

Yeah, I cannot use LWP or IO::Socket, because those packages are not
available to me and I do not have root permissions.

perldoc -q "my own module"
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,233
Members
46,820
Latest member
GilbertoA5

Latest Threads

Top