Curses %$#@!

D

Default

<cry>
Not getting any sort of error at all, the program just ends. 0_o
Exporter and DynaLoader are both installed.
Curses is installed properly.

If i run the program from the debugger these messeges appear.

Subroutine bits redefined at C:/Perl/lib/Strict.pm line 101.
Subroutine import redefined at C:/Perl/lib/Strict.pm line 107.
Subroutine unimport redefined at C:/Perl/lib/Strict.pm line 112.
Subroutine Croaker redefined at C:/Perl/lib/Warnings.pm line 292.
Subroutine bits redefined at C:/Perl/lib/Warnings.pm line 298.
Subroutine import redefined at C:/Perl/lib/Warnings.pm line 330.
Subroutine unimport redefined at C:/Perl/lib/Warnings.pm line 368.
Subroutine __chk redefined at C:/Perl/lib/Warnings.pm line 396.
Subroutine enabled redefined at C:/Perl/lib/Warnings.pm line 444.
Subroutine warn redefined at C:/Perl/lib/Warnings.pm line 457.
Subroutine warnif redefined at C:/Perl/lib/Warnings.pm line 470.

Here is the script, I'm only using curses to try and clean up the display.
Please help this is way over my newbie head.

#!
use Strict;
use Warnings;
use Curses;
use Socket;
initscr;
$| = 1;

my ($internet_addr, $paddr, $remote_port, $remote_host, $kidpid1,
$kidpid2, $kidpid3, @ports_even1, @ports_odd1, @ports_even2,
@ports_odd2,);
my $counter = 1;
my $p_e_loader1 = 2;
my $p_o_loader1 = 1;
my $p_e_loader2 = 514;
my $p_o_loader2 = 513;
print "\n" . ' ' . '='x78 . "\n";
print "\t\t\t\tPort Scanner\n";
print ' ' . '='x78 . "\n\n";

while ($counter <= 256)
{
push (@ports_even1, $p_e_loader1);
$p_e_loader1++;$p_e_loader1++;
$counter++;
if ($counter >= 250) {print "\n@ports_even1\n";my $pause = <STDIN>;}
}
$counter = 1;
while ($counter <= 256)
{
push (@ports_odd1, $p_o_loader1);
$p_o_loader1++;$p_o_loader1++;
$counter++;
}
$counter = 1;
while ($counter <= 256)
{
push (@ports_even2, $p_e_loader2);
$p_e_loader2++;$p_e_loader2++;
$counter++;
}
$counter = 1;
while ($counter <= 256)
{
push (@ports_odd2, $p_o_loader2);
$p_o_loader2++;$p_o_loader2++;
$counter++;
}
undef $counter;

#resolve targets address
$remote_host = shift || 'localhost';
$internet_addr = inet_aton($remote_host) ||
die "Couldn't resolve $remote_host"."'s address\n($!)\n($^E)*";

#create two processes
die "can't fork\n($!)\n($^E)\n*" unless defined($kidpid1 = fork());

if ($kidpid1) #first parent process
{
foreach $remote_port (@ports_even1)
{
my $win = new Curses;
$win->addstr(10, 1, "$remote_port");
$win->refresh;
# print "\b\b\b\b \b\b\b\b";
# print "$remote_port"
socket(SOCK_OUT, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
$paddr = sockaddr_in($remote_port, $internet_addr);
if (connect(SOCK_OUT, $paddr))
{print "\nPort: $remote_port is open.\n";}
eval
{
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
alarm 1;
close(SOCK_OUT);
alarm 0;
};
}
}
else #first child process
{
#create a third process
die "can't fork\n($!)\n($^E)\n*" unless defined($kidpid2 = fork());
if ($kidpid2) #second parent process
{
foreach $remote_port (@ports_odd1)
{
my $win = new Curses;
$win->addstr(10, 11, "$remote_port");
$win->refresh;
# print "\b\b\b\b \b\b\b\b";
# print "$remote_port"
socket(SOCK_OUT, PF_INET, SOCK_STREAM,
getprotobyname('tcp'));
$paddr = sockaddr_in($remote_port, $internet_addr);
if (connect(SOCK_OUT, $paddr))
{print "\nPort: $remote_port is open.\n";}
eval
{
local $SIG{ALRM} = sub { die "alarm\n" };
alarm 1;
close(SOCK_OUT);
alarm 0;
};
}
}
else #second child process
{
#create a fourth process
die "can't fork\n($!)\n($^E)\n*" unless defined($kidpid3=fork());
if ($kidpid3) #third parent process
{
foreach $remote_port (@ports_even2)
{
my $win = new Curses;
$win->addstr(10, 21, "$remote_port");
$win->refresh;
# print "\b\b\b\b \b\b\b\b";
# print "$remote_port";
socket(SOCK_OUT, PF_INET, SOCK_STREAM,
getprotobyname('tcp'));
$paddr = sockaddr_in($remote_port, $internet_addr);
if (connect(SOCK_OUT, $paddr))
{print "\nPort: $remote_port is open.\n";}
eval
{
local $SIG{ALRM} = sub { die "alarm\n" };
alarm 1;
close(SOCK_OUT);
alarm 0;
};
}
}
else
{
foreach $remote_port (@ports_odd2)
{
my $win = new Curses;
$win->addstr(10, 31, "$remote_port");
$win->refresh;
# print "\b\b\b\b \b\b\b\b";
# print "$remote_port";
socket(SOCK_OUT, PF_INET, SOCK_STREAM,
getprotobyname('tcp'));
$paddr = sockaddr_in($remote_port, $internet_addr);
if (connect(SOCK_OUT, $paddr))
{print "\nPort: $remote_port is open.\n";}
eval
{
local $SIG{ALRM} = sub { die "alarm\n" };
alarm 1;
close(SOCK_OUT);
alarm 0;
};
}
}
}
}
endwin;
kill("TERM", $kidpid1);
kill("TERM", $kidpid2);
kill("TERM", $kidpid3);
print "\nDone.\n" && exit;
 
B

Brian McCauley

Subject: Re: Curses %$#@!

Your question has nothing to do with Curses.

[ lots of stuff caused by not realising Perl module names are case
sensative ]

Perl module names are case sensative.

--
\\ ( )
. _\\__[oo
.__/ \\ /\@
. l___\\
# ll l\\
###LL LL\\
 
T

Tore Aursand

<cry>
Not getting any sort of error at all, the program just ends.

Please use the subject of your post as the subject of your post.
#!
use Strict;
use Warnings;

What OS are you running? Does it really allow module names to be written
this way? On Linux, I can't even run this script;

#!/usr/local/bin/perl
#
use Strict;
use Warnings;

That's because there _are no_ modules named 'Strict' and/or 'Warnings'.
They are named 'strict' and 'warnings'.
 
D

Default

Please use the subject of your post as the subject of your post.


What OS are you running? Does it really allow module names to be written
this way? On Linux, I can't even run this script;

#!/usr/local/bin/perl
#
use Strict;
use Warnings;

That's because there _are no_ modules named 'Strict' and/or 'Warnings'.
They are named 'strict' and 'warnings'.


--
Tore Aursand <[email protected]>
"A teacher is never a giver of truth - he is a guide, a pointer to the
truth that each student must find for himself. A good teacher is
merely a catalyst." -- Bruce Lee
same results with use strict and use warnings remarked out
 
D

Default

Your question has nothing to do with Curses. Grin
Perl module names are case sensative.

I've altered the code... same results but this should narrow it down some.

#!
use strict;
use warnings;
use diagnostics;
use Curses;
use Socket;
$| = 1;

my ($internet_addr, $paddr, $remote_port, $remote_host, $kidpid1,
$kidpid2, $kidpid3, @ports_even1, @ports_odd1, @ports_even2,
@ports_odd2,);
my $counter = 1;
my $p_e_loader1 = 2;
my $p_o_loader1 = 1;
my $p_e_loader2 = 514;
my $p_o_loader2 = 513;
print "\n" . ' ' . '='x78 . "\n";
print "\t\t\t\tPort Scanner\n";
print ' ' . '='x78 . "\n\n";

initscr;
while ($counter <= 256)
{
push (@ports_even1, $p_e_loader1);
$p_e_loader1++;$p_e_loader1++;
$counter++;
if ($counter >= 250) {print "\n@ports_even1\n";my $pause = <STDIN>;}
}
$counter = 1;
while ($counter <= 256)
{
push (@ports_odd1, $p_o_loader1);
$p_o_loader1++;$p_o_loader1++;
$counter++;
}
$counter = 1;
while ($counter <= 256)
{
push (@ports_even2, $p_e_loader2);
$p_e_loader2++;$p_e_loader2++;
$counter++;
}
$counter = 1;
while ($counter <= 256)
{
push (@ports_odd2, $p_o_loader2);
$p_o_loader2++;$p_o_loader2++;
$counter++;
}
undef $counter;

#resolve targets address
$remote_host = shift || 'localhost';
$internet_addr = inet_aton($remote_host) ||
die "Couldn't resolve $remote_host"."'s address\n($!)\n($^E)*";

#create two processes
die "can't fork\n($!)\n($^E)\n*" unless defined($kidpid1 = fork());

if ($kidpid1) #first parent process
{
foreach $remote_port (@ports_even1)
{
my $win = new Curses;
$win->addstr(10, 1, "$remote_port");
$win->refresh;
# print "\b\b\b\b \b\b\b\b";
# print "$remote_port"
socket(SOCK_OUT, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
$paddr = sockaddr_in($remote_port, $internet_addr);
if (connect(SOCK_OUT, $paddr))
{print "\nPort: $remote_port is open.\n";}
eval
{
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
alarm 1;
close(SOCK_OUT);
alarm 0;
};
}
}
else #first child process
{
#create a third process
die "can't fork\n($!)\n($^E)\n*" unless defined($kidpid2 = fork());
if ($kidpid2) #second parent process
{
foreach $remote_port (@ports_odd1)
{
my $win = new Curses;
$win->addstr(10, 11, "$remote_port");
$win->refresh;
# print "\b\b\b\b \b\b\b\b";
# print "$remote_port"
socket(SOCK_OUT, PF_INET, SOCK_STREAM,
getprotobyname('tcp'));
$paddr = sockaddr_in($remote_port, $internet_addr);
if (connect(SOCK_OUT, $paddr))
{print "\nPort: $remote_port is open.\n";}
eval
{
local $SIG{ALRM} = sub { die "alarm\n" };
alarm 1;
close(SOCK_OUT);
alarm 0;
};
}
}
else #second child process
{
#create a fourth process
die "can't fork\n($!)\n($^E)\n*" unless defined($kidpid3=fork());
if ($kidpid3) #third parent process
{
foreach $remote_port (@ports_even2)
{
my $win = new Curses;
$win->addstr(10, 21, "$remote_port");
$win->refresh;
# print "\b\b\b\b \b\b\b\b";
# print "$remote_port"
socket(SOCK_OUT, PF_INET, SOCK_STREAM,
getprotobyname('tcp'));
$paddr = sockaddr_in($remote_port, $internet_addr);
if (connect(SOCK_OUT, $paddr))
{print "\nPort: $remote_port is open.\n";}
eval
{
local $SIG{ALRM} = sub { die "alarm\n" };
alarm 1;
close(SOCK_OUT);
alarm 0;
};
}
}
else
{
foreach $remote_port (@ports_odd2)
{
my $win = new Curses;
$win->addstr(10, 31, "$remote_port");
$win->refresh;
# print "\b\b\b\b \b\b\b\b";
# print "$remote_port";
socket(SOCK_OUT, PF_INET, SOCK_STREAM,
getprotobyname('tcp'));
$paddr = sockaddr_in($remote_port, $internet_addr);
if (connect(SOCK_OUT, $paddr))
{print "\nPort: $remote_port is open.\n";}
eval
{
local $SIG{ALRM} = sub { die "alarm\n" };
alarm 1;
close(SOCK_OUT);
alarm 0;
};
}
}
}
}
endwin;
kill("TERM", $kidpid1);
kill("TERM", $kidpid2);
kill("TERM", $kidpid3);
print "\nDone.\n" && exit;
 
D

Default

Windows 2000 $erver

no, my mistake they are indeed case sensitive.
ive altered the code. problem persists.

also is there a version of alarm for win32?

here is the new code.

#!
use strict;
use warnings;
use diagnostics;
use Curses;
use Socket;
$| = 1;

my ($internet_addr, $paddr, $remote_port, $remote_host, $kidpid1,
$kidpid2, $kidpid3, @ports_even1, @ports_odd1, @ports_even2,
@ports_odd2,);
my $counter = 1;
my $p_e_loader1 = 2;
my $p_o_loader1 = 1;
my $p_e_loader2 = 514;
my $p_o_loader2 = 513;
print "\n" . ' ' . '='x78 . "\n";
print "\t\t\t\tPort Scanner\n";
print ' ' . '='x78 . "\n\n";

initscr;
while ($counter <= 256)
{
push (@ports_even1, $p_e_loader1);
$p_e_loader1++;$p_e_loader1++;
$counter++;
if ($counter >= 250) {print "\n@ports_even1\n";my $pause = <STDIN>;}
}
$counter = 1;
while ($counter <= 256)
{
push (@ports_odd1, $p_o_loader1);
$p_o_loader1++;$p_o_loader1++;
$counter++;
}
$counter = 1;
while ($counter <= 256)
{
push (@ports_even2, $p_e_loader2);
$p_e_loader2++;$p_e_loader2++;
$counter++;
}
$counter = 1;
while ($counter <= 256)
{
push (@ports_odd2, $p_o_loader2);
$p_o_loader2++;$p_o_loader2++;
$counter++;
}
undef $counter;

#resolve targets address
$remote_host = shift || 'localhost';
$internet_addr = inet_aton($remote_host) ||
die "Couldn't resolve $remote_host"."'s address\n($!)\n($^E)*";

#create two processes
die "can't fork\n($!)\n($^E)\n*" unless defined($kidpid1 = fork());

if ($kidpid1) #first parent process
{
foreach $remote_port (@ports_even1)
{
my $win = new Curses;
$win->addstr(10, 1, "$remote_port");
$win->refresh;
# print "\b\b\b\b \b\b\b\b";
# print "$remote_port"
socket(SOCK_OUT, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
$paddr = sockaddr_in($remote_port, $internet_addr);
if (connect(SOCK_OUT, $paddr))
{print "\nPort: $remote_port is open.\n";}
eval
{
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
alarm 1;
close(SOCK_OUT);
alarm 0;
};
}
}
else #first child process
{
#create a third process
die "can't fork\n($!)\n($^E)\n*" unless defined($kidpid2 = fork());
if ($kidpid2) #second parent process
{
foreach $remote_port (@ports_odd1)
{
my $win = new Curses;
$win->addstr(10, 11, "$remote_port");
$win->refresh;
# print "\b\b\b\b \b\b\b\b";
# print "$remote_port"
socket(SOCK_OUT, PF_INET, SOCK_STREAM,
getprotobyname('tcp'));
$paddr = sockaddr_in($remote_port, $internet_addr);
if (connect(SOCK_OUT, $paddr))
{print "\nPort: $remote_port is open.\n";}
eval
{
local $SIG{ALRM} = sub { die "alarm\n" };
alarm 1;
close(SOCK_OUT);
alarm 0;
};
}
}
else #second child process
{
#create a fourth process
die "can't fork\n($!)\n($^E)\n*" unless defined($kidpid3=fork());
if ($kidpid3) #third parent process
{
foreach $remote_port (@ports_even2)
{
my $win = new Curses;
$win->addstr(10, 21, "$remote_port");
$win->refresh;
# print "\b\b\b\b \b\b\b\b";
# print "$remote_port"
socket(SOCK_OUT, PF_INET, SOCK_STREAM,
getprotobyname('tcp'));
$paddr = sockaddr_in($remote_port, $internet_addr);
if (connect(SOCK_OUT, $paddr))
{print "\nPort: $remote_port is open.\n";}
eval
{
local $SIG{ALRM} = sub { die "alarm\n" };
alarm 1;
close(SOCK_OUT);
alarm 0;
};
}
}
else
{
foreach $remote_port (@ports_odd2)
{
my $win = new Curses;
$win->addstr(10, 31, "$remote_port");
$win->refresh;
# print "\b\b\b\b \b\b\b\b";
# print "$remote_port";
socket(SOCK_OUT, PF_INET, SOCK_STREAM,
getprotobyname('tcp'));
$paddr = sockaddr_in($remote_port, $internet_addr);
if (connect(SOCK_OUT, $paddr))
{print "\nPort: $remote_port is open.\n";}
eval
{
local $SIG{ALRM} = sub { die "alarm\n" };
alarm 1;
close(SOCK_OUT);
alarm 0;
};
}
}
}
}
endwin;
kill("TERM", $kidpid1);
kill("TERM", $kidpid2);
kill("TERM", $kidpid3);
print "\nDone.\n" && exit;
 
B

Brian McCauley

I've altered the code... same results

If the "same results" means you still get errors saying stuff about
"Strict.pm" then you've not altered all the code.

If the "same results" means something else then this must be some
unusual use of "same" I'm not familar with.

Since you don't say what the program does and why this is wrong I'm
just going make some general observations.
#!
use strict;
use warnings;
use diagnostics;
use Curses;
use Socket;

Don't use the low-level Socket module directly to implement IP sockets
unless you are a masochist. Use IO::Socket::INET.
$| = 1;

my ($internet_addr, $paddr, $remote_port, $remote_host, $kidpid1,
$kidpid2, $kidpid3, @ports_even1, @ports_odd1, @ports_even2,
@ports_odd2,);

If you find youself declaring a series of variables $foo1, $foo2,
$foo3 you should see the word "array" float before your eyes and glow
so brightly it causes pain.

Do not declare all your variables up top. It defeats half the point
of using explicit declaration in the first place. Always declare all
variables as lexically scoped in the smallest applicable scope unless
there is a reson to do otherwise. This is not perculliar to Perl it
applies in all languages in which the concept of lexical variable
scope exists.
my $counter = 1;
my $p_e_loader1 = 2;
my $p_o_loader1 = 1;
my $p_e_loader2 = 514;
my $p_o_loader2 = 513;
print "\n" . ' ' . '='x78 . "\n";
print "\t\t\t\tPort Scanner\n";
print ' ' . '='x78 . "\n\n";

initscr;
while ($counter <= 256)
{
push (@ports_even1, $p_e_loader1);
$p_e_loader1++;$p_e_loader1++;
$counter++;
if ($counter >= 250) {print "\n@ports_even1\n";my $pause = <STDIN>;}
}

Using C-style for in Perl is usually poor style. But avoiding a
C-style for by simulating it with while() is worse.

What you did was:
my $counter = 1;
while ($counter <= 256)
{ # Do stuff
$counter++;
}

As a C-style for this is:

for ( my $counter = 1; $counter <= 256; $counter++ ) {
# Do stuff
}

As a Perl-style for it is

for my $counter ( 1 .. 256 ) {
# Do stuff
}

Both of these also declare $counter in the correct scope.

Actually since you aren't using $counter, and are not using $_ for
anything already it would just be

for ( 1 .. 256 ) {
# Do stuff
}
$counter = 1;
while ($counter <= 256)
{
push (@ports_even2, $p_e_loader2);
$p_e_loader2++;$p_e_loader2++;

Any particular reason you didn't use +=2 ?
$counter++;
}

A more conventional way to get even numbers say 2 to 20 would be:

my @even_numbers = map { $_ * 2 } 1 .. 10;
$counter = 1;
while ($counter <= 256)
{
push (@ports_odd2, $p_o_loader2);
$p_o_loader2++;$p_o_loader2++;
$counter++;
}

If you find youself writing the same code over using a series of
variables $foo1, $foo2, $foo3 you should see the word "array" float
before your eyes and glow so brightly that you can actually smell the
skin on your face start to smoulder.
undef $counter;

Don't try to work-round the fact that you've declared a variable in
the wrong scope. Just do the right thing in the first place.
#resolve targets address
$remote_host = shift || 'localhost';
$internet_addr = inet_aton($remote_host) ||
die "Couldn't resolve $remote_host"."'s address\n($!)\n($^E)*";

#create two processes
die "can't fork\n($!)\n($^E)\n*" unless defined($kidpid1 = fork());

Eeek! You are using $^E. That means Win32. ISTR that forking and
sockets and Win32 don't mix too well.

--
\\ ( )
. _\\__[oo
.__/ \\ /\@
. l___\\
# ll l\\
###LL LL\\
 
D

Default

If the "same results" means you still get errors saying stuff about
"Strict.pm" then you've not altered all the code.

If the "same results" means something else then this must be some
unusual use of "same" I'm not familar with.

Since you don't say what the program does and why this is wrong I'm
just going make some general observations.

ok, the script works fine... untill i add use curses.. without curses all is well
with it the script simply ends with no errors.
 
U

Uri Guttman

BM> If you find youself writing the same code over using a series of
BM> variables $foo1, $foo2, $foo3 you should see the word "array" float
BM> before your eyes and glow so brightly that you can actually smell the
BM> skin on your face start to smoulder.

i was wondering what that smell was. i thought it was the code! :)

BM> Eeek! You are using $^E. That means Win32. ISTR that forking and
BM> sockets and Win32 don't mix too well.

i just did a test with socketpair and fork on win32 and it works
fine. but caveat coder.

uri
 
D

Default

BM" == Brian McCauley said:
BM> If you find youself writing the same code over using a series of
BM> variables $foo1, $foo2, $foo3 you should see the word "array" float
BM> before your eyes and glow so brightly that you can actually smell the
BM> skin on your face start to smoulder.

i was wondering what that smell was. i thought it was the code! :)

hehe, hey i just started programming four weeks ago.
perl is my first programming language.

so, forget the ip stuff, thats not very important.. what im mostly curious
about is what going on with the curses module. any ideas?

cheers.
 
D

Default

BM" == Brian McCauley said:
BM> If you find youself writing the same code over using a series of
BM> variables $foo1, $foo2, $foo3 you should see the word "array" float
BM> before your eyes and glow so brightly that you can actually smell the
BM> skin on your face start to smoulder.

i was wondering what that smell was. i thought it was the code! :)

BM> Eeek! You are using $^E. That means Win32. ISTR that forking and
BM> sockets and Win32 don't mix too well.

i just did a test with socketpair and fork on win32 and it works
fine. but caveat coder.

uri

btw what you just posted is completly useless and mean uri or norman or
whoever you are. :p
 
U

Uri Guttman

BM> Eeek! You are using $^E. That means Win32. ISTR that forking and
BM> sockets and Win32 don't mix too well.
D> btw what you just posted is completly useless and mean uri or
D> norman or whoever you are. :p

hmm, you followed up to brian's email and respond to mine. and my name
is right here in plain sight. so you must have looked up the domain and
saw the name of my late father. how brilliant.

as for my comment, it was a joke but you can't seem to figure that
out. i don't think i will be offering much help in your direction.

uri
 
B

Brian McCauley

Scott Bryce said:
You haven't been lurking long have you? Posts that say nothing more
than "Uri is mean," or "Tad is mean," or "{name your favorite Perl
guru} is mean" serve only to insure that your questions will not be
answered in the future.

I'd say Uri and Tad are at least one standard deviation above the
mean.

--
\\ ( )
. _\\__[oo
.__/ \\ /\@
. l___\\
# ll l\\
###LL LL\\
 
T

Tad McClellan

Brian McCauley said:
I'd say Uri and Tad are at least one standard deviation above the
mean.


My wife made an uncomplimentary comment regarding my bell-shaped
distribution while I was stretched out on the couch following
Thanksgiving dinner yesterday (I was just resting my eyes).

My parents are here for the holiday, so I called out...

--
\\ ( )
. _\\__[oo
.__/ \\ /\@
. l___\\
# ll l\\
###LL LL\\


.... "Come look at this guy's cool .sig ma"
 
E

Eric J. Roode

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Default@IO_Error_1011101.xyz [JDM] wrote in
btw what you just posted is completly useless and mean uri or norman
or whoever you are. :p

Mean? Didn't seem mean to me. What's mean about it? Briam said that
something was a bad idea. Uri went out of his way to do a test, and said
it worked for him. Both comments were relevant to your program.

What's YOUR problem?

- --
Eric
$_ = reverse sort $ /. r , qw p ekca lre uJ reh
ts p , map $ _. $ " , qw e p h tona e and print

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 7.0.3 for non-commercial use <http://www.pgp.com>

iQA/AwUBP8dfTmPeouIeTNHoEQI6YwCeO6CppzQECfFBzWGqojBgcmFEkG0AnRAC
v2wjeGYzBJuWL8E4d5AAV0yr
=odyT
-----END PGP SIGNATURE-----
 
P

Peter Scott

Brian McCauley said:
Eeek! You are using $^E. That means Win32.

Technically, it could also be VMS, OS/2, or MacOS. But Win32
is certainly the most likely of the possibilities in this case.
 

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

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,023
Latest member
websitedesig25

Latest Threads

Top