in reply to Re: What modules required
in thread What modules required

I just expected that that script contains all, and does not require additional scripts.
Not sure about this scripts:.

require 'CONFIG_ROOT/general-functions.pl';
require "${General::swroot}/lang.pl";
require "${General::swroot}/header.pl";

I tried run script, get Internal Server error. Provider also checked script and say, that this error appears when the script is run:

root@web1 cgi-bin# sudo -u gareks ./ipinfo.cgi
Unterminated <> operator at ./ipinfo.cgi line 90.

here is full code:
#!/usr/bin/perl # # SmoothWall CGIs # # This code is distributed under the terms of the GPL # # (c) The SmoothWall Team # # (c) 2002 Josh Grubman - Multiple registry IP lookup code # # $Id: ipinfo.cgi,v 1.4.2.3 2005/02/22 22:21:56 gespinasse Exp $ # use IO::Socket; use strict; # enable only the following on debugging purpose #use warnings; #use CGI::Carp 'fatalsToBrowser'; require 'CONFIG_ROOT/general-functions.pl'; require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; my %cgiparams=(); &Header::showhttpheaders(); &Header::getcgihash(\%cgiparams); $ENV{'QUERY_STRING'} =~s/&//g; my @addrs = split(/ip=/,$ENV{'QUERY_STRING'}); my %whois_servers = ("RIPE"=>"whois.ripe.net","APNIC"=>"whois.apnic.ne +t","LACNIC"=>"whois.lacnic.net"); &Header::openpage($Lang::tr{'ip info'}, 1, ''); &Header::openbigbox('100%', 'left'); my @lines=(); my $extraquery=''; foreach my $addr (@addrs) { next if $addr eq ""; $extraquery=''; @lines=(); my $whoisname = "whois.arin.net"; my $iaddr = inet_aton($addr); my $hostname = gethostbyaddr($iaddr, AF_INET); if (!$hostname) { $hostname = $Lang::tr{'lookup failed'}; } my $sock = new IO::Socket::INET ( PeerAddr => $whoisname, PeerPort + => 43, Proto => 'tcp'); if ($sock) { print $sock "$addr\n"; while (<$sock>) { $extraquery = $1 if (/NetType: Allocated to (\S+)\s+/); push(@lines,$_); } close($sock); if ($extraquery) { undef (@lines); $whoisname = $whois_servers{$extraquery}; my $sock = new IO::Socket::INET ( PeerAddr => $whoisname, +PeerPort => 43, Proto => 'tcp'); if ($sock) { print $sock "$addr\n"; while (<$sock>) { push(@lines,$_); } } else { @lines = ( "$Lang::tr{'unable to contact'} $whoisname" + ); } } } else { @lines = ( "$Lang::tr{'unable to contact'} $whoisname" ); } &Header::openbox('100%', 'left', $addr . ' (' . $hostname . ') : ' +.$whoisname); print "\n"; foreach my $line (@lines) { print &Header::cleanhtml($line,"y"); } print "\n"; &Header::closebox(); } print < $Lang::tr{'back'} END ; &Header::closebigbox(); &Header::closepage();

Replies are listed 'Best First'.
Re^3: What modules required
by quester (Vicar) on Oct 11, 2006 at 23:28 UTC
    The error "Unterminated <> operator at ./ipinfo.cgi line 90." is from this line:
    print <
    which appears to be a typo, most likely for a "here document" reference:
    print <<END
    But the reference to ${General::swroot} has just got to be defined in CONFIG_ROOT/general-functions.pl, so you need a copy of that file, as well as lang.pl and header.pl. There is no way that this can be a complete script by itself.
Re^3: What modules required
by shmem (Chancellor) on Oct 11, 2006 at 23:45 UTC
    Hm. This snippet
    print < $Lang::tr{'back'} END

    should be something like

    print <<END; $Lang::tr{'back'} END

    what do the folks at SmoothWall say to that?

    --shmem

    _($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                                  /\_¯/(q    /
    ----------------------------  \__(m.====·.(_("always off the crowd"))."·
    ");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}
      Well, I see this script is incomplete.
      There is missing CONFIG_ROOT/general-functions.pl in @INC and lang.pl, header.pl.
      I just expected this code will show IP and other relevant info.