Front page | perl.perl5.porters |
Postings from July 2001
[ID 20010724.007] REGEXP bug in perl 5.6.1
Thread Next
From:
stuart lory
Date:
July 24, 2001 19:24
Subject:
[ID 20010724.007] REGEXP bug in perl 5.6.1
Message ID:
20010725022336.56839.qmail@web10902.mail.yahoo.com
Hello,
I have discovered what I belive is a bug in Perl
version 5.6.1. At least, the behavior is bizarre
enough that I would appreciate knowing if this is
supposed to be a feature.
The problem seems to lie in regexps with multi-line
matching. I've written a small perl program (included)
which demonstrates the bug and it can be reproduced. I
have tried this on two different machines (x86 Solaris
8 & x86 Linux 2.4.4) with the same results.
The situation occurs when using /o in a regexp.
Specifically I am using /mos, and the bug does not
show up if I change the regexp to /ms. My
understanding is /o means 'compile pattern once'. But
since I am doing this in a subroutine, I was expecting
the regexp to go out of scope when the subroutine
ended.
What happens in test #2 is almost certainly a bug
since I am passing in two different strings and the
second string is being modified in a place where the
first string had been changed. I think it's probably
easier just to show an example output:
============BEGIN TEST 1 ============
ModifyX(): replace 'brown' with 'purple'
BEFORE: The quick
brown fox jumps
over the
lazy dawg
AFTER: The quick
purple fox jumps
over the
lazy dawg
====END ModifyX()====
ModifyX(): replace 'over' with 'into'
BEFORE: The quick
purple fox jumps
over the
lazy dawg
AFTER: The quick
purple fox jumps
over the
lazy dawg
====END ModifyX()====
============BEGIN TEST 2 ============
===Replace 'brown' with 'purple'===
BEFORE: The quick
brown fox jumps
over the
lazy dawg
AFTER: The quick
purple fox jumps
over the
lazy dawg
==END ModAnyString()==
===Replace 'over' with 'into'===
BEFORE: The quick
brown fox jumps
over the
lazy dawg
AFTER: The quick
into fox jumps
over the
lazy dawg
==END ModAnyString()==
What follows is the program I wrote to do this test,
an output from running 'perl -Dr' to show the pattern
matching, and the obligatory dump as requested from
'perlbug'.
Thank you,
Stuart Lory
Zurich Switzerland
#!/usr/bin/perl
$X=$Y=$Z="The quick\nbrown fox jumps\nover the\nlazy
dawg\n";
test1();
test2();
sub test1 {
print "============BEGIN TEST 1 ============\n";
ModifyX('brown','purple');
ModifyX('over','into');
}
sub test2 {
print "============BEGIN TEST 2 ============\n";
ModAnyString($Y,'brown','purple');
ModAnyString($Z,'over' ,'into' );
}
sub ModifyX {
#
# specifically modifies $X
#
my ($old,$new)=@_;
print "ModifyX(): replace '$old' with '$new'\n\n";
print "BEFORE: $X";
$X=~s/\A(.+)$old/\1$new/mos;
print "\nAFTER: $X\n====END ModifyX()====\n\n";
}
sub ModAnyString {
#
# modifies first string in @_
#
my ($target,$old,$new)=@_;
print "\n===Replace '$old' with '$new'===\n\n";
print "BEFORE: $target";
$target=~s/\A(.+)$old/\1$new/mos;
print "\nAFTER: $target\n==END ModAnyString()==\n\n";
}
Script started on Wed 25 Jul 2001 03:41:33 AM MEST
$ perl -Dr bug.pl
Omitting $` $& $' support.
EXECUTING...
============BEGIN TEST 1 ============
ModifyX(): replace 'brown' with 'purple'
BEFORE: The quick
brown fox jumps
over the
lazy dawg
Compiling REx `\A(.+)brown'
size 11 first at 2
rarest char w at 3
1: SBOL(2)
2: OPEN1(4)
4: PLUS(6)
5: SANY(0)
6: CLOSE1(8)
8: EXACT <brown>(11)
11: END(0)
floating `brown' at 1..2147483647 (checking floating)
anchored(SBOL) minlen 6
Guessing start of match, REx `\A(.+)brown' against
`The quick
brown fox jumps
over the
lazy dawg
'...
Found floating substr `brown' at offset 10...
Guessed: match at offset 0
Matching REx `\A(.+)brown' against `The quick
brown fox jumps
over the
lazy dawg
'
Setting an EVAL scope, savestack=22
0 <> <The quick
br> | 1: SBOL
0 <> <The quick
br> | 2: OPEN1
0 <> <The quick
br> | 4: PLUS
SANY can match 45 times out
of 32767...
Setting an EVAL scope, savestack=22
45 <e
lazy dawg
> <> | 6: CLOSE1
45 <e
lazy dawg
> <> | 8: EXACT <brown>
failed...
44 <e
lazy dawg> <
> | 6: CLOSE1
44 <e
lazy dawg> <
> | 8: EXACT <brown>
failed...
43 <e
lazy daw> <g
> | 6: CLOSE1
43 <e
lazy daw> <g
> | 8: EXACT <brown>
failed...
42 <e
lazy da> <wg
> | 6: CLOSE1
42 <e
lazy da> <wg
> | 8: EXACT <brown>
failed...
41 <e
lazy d> <awg
> | 6: CLOSE1
41 <e
lazy d> <awg
> | 8: EXACT <brown>
failed...
40 <e
lazy > <dawg
> | 6: CLOSE1
40 <e
lazy > <dawg
> | 8: EXACT <brown>
failed...
39 <e
lazy> < dawg
> | 6: CLOSE1
39 <e
lazy> < dawg
> | 8: EXACT <brown>
failed...
38 <e
laz> <y dawg
> | 6: CLOSE1
38 <e
laz> <y dawg
> | 8: EXACT <brown>
failed...
37 <he
la> <zy dawg> | 6: CLOSE1
37 <he
la> <zy dawg> | 8: EXACT <brown>
failed...
36 <the
l> <azy daw> | 6: CLOSE1
36 <the
l> <azy daw> | 8: EXACT <brown>
failed...
35 < the
> <lazy da> | 6: CLOSE1
35 < the
> <lazy da> | 8: EXACT <brown>
failed...
34 <r the> <
lazy d> | 6: CLOSE1
34 <r the> <
lazy d> | 8: EXACT <brown>
failed...
33 <er th> <e
lazy > | 6: CLOSE1
33 <er th> <e
lazy > | 8: EXACT <brown>
failed...
32 <ver t> <he
lazy> | 6: CLOSE1
32 <ver t> <he
lazy> | 8: EXACT <brown>
failed...
31 <over > <the
laz> | 6: CLOSE1
31 <over > <the
laz> | 8: EXACT <brown>
failed...
30 <
over> < the
la> | 6: CLOSE1
30 <
over> < the
la> | 8: EXACT <brown>
failed...
29 <s
ove> <r the
l> | 6: CLOSE1
29 <s
ove> <r the
l> | 8: EXACT <brown>
failed...
28 <ps
ov> <er the
> | 6: CLOSE1
28 <ps
ov> <er the
> | 8: EXACT <brown>
failed...
27 <mps
o> <ver the> | 6: CLOSE1
27 <mps
o> <ver the> | 8: EXACT <brown>
failed...
26 <umps
> <over th> | 6: CLOSE1
26 <umps
> <over th> | 8: EXACT <brown>
failed...
25 <jumps> <
over t> | 6: CLOSE1
25 <jumps> <
over t> | 8: EXACT <brown>
failed...
24 < jump> <s
over > | 6: CLOSE1
24 < jump> <s
over > | 8: EXACT <brown>
failed...
23 <x jum> <ps
over> | 6: CLOSE1
23 <x jum> <ps
over> | 8: EXACT <brown>
failed...
22 <ox ju> <mps
ove> | 6: CLOSE1
22 <ox ju> <mps
ove> | 8: EXACT <brown>
failed...
21 <fox j> <umps
ov> | 6: CLOSE1
21 <fox j> <umps
ov> | 8: EXACT <brown>
failed...
20 < fox > <jumps
o> | 6: CLOSE1
20 < fox > <jumps
o> | 8: EXACT <brown>
failed...
19 <n fox> < jumps
> | 6: CLOSE1
19 <n fox> < jumps
> | 8: EXACT <brown>
failed...
18 <wn fo> <x jumps> | 6: CLOSE1
18 <wn fo> <x jumps> | 8: EXACT <brown>
failed...
17 <own f> <ox jump> | 6: CLOSE1
17 <own f> <ox jump> | 8: EXACT <brown>
failed...
16 <rown > <fox jum> | 6: CLOSE1
16 <rown > <fox jum> | 8: EXACT <brown>
failed...
15 <brown> < fox ju> | 6: CLOSE1
15 <brown> < fox ju> | 8: EXACT <brown>
failed...
14 <
brow> <n fox j> | 6: CLOSE1
14 <
brow> <n fox j> | 8: EXACT <brown>
failed...
13 <k
bro> <wn fox > | 6: CLOSE1
13 <k
bro> <wn fox > | 8: EXACT <brown>
failed...
12 <ck
br> <own fox> | 6: CLOSE1
12 <ck
br> <own fox> | 8: EXACT <brown>
failed...
11 <ick
b> <rown fo> | 6: CLOSE1
11 <ick
b> <rown fo> | 8: EXACT <brown>
failed...
10 <uick
> <brown f> | 6: CLOSE1
10 <uick
> <brown f> | 8: EXACT <brown>
15 <brown> < fox ju> | 11: END
Match successful!
AFTER: The quick
purple fox jumps
over the
lazy dawg
====END ModifyX()====
ModifyX(): replace 'over' with 'into'
BEFORE: The quick
purple fox jumps
over the
lazy dawg
Guessing start of match, REx `\A(.+)brown' against
`The quick
purple fox jumps
over the
lazy dawg
'...
Did not find floating substr `brown'...
Match rejected by optimizer
AFTER: The quick
purple fox jumps
over the
lazy dawg
====END ModifyX()====
============BEGIN TEST 2 ============
===Replace 'brown' with 'purple'===
BEFORE: The quick
brown fox jumps
over the
lazy dawg
Compiling REx `\A(.+)brown'
size 11 first at 2
rarest char w at 3
1: SBOL(2)
2: OPEN1(4)
4: PLUS(6)
5: SANY(0)
6: CLOSE1(8)
8: EXACT <brown>(11)
11: END(0)
floating `brown' at 1..2147483647 (checking floating)
anchored(SBOL) minlen 6
Guessing start of match, REx `\A(.+)brown' against
`The quick
brown fox jumps
over the
lazy dawg
'...
Found floating substr `brown' at offset 10...
Guessed: match at offset 0
Matching REx `\A(.+)brown' against `The quick
brown fox jumps
over the
lazy dawg
'
Setting an EVAL scope, savestack=24
0 <> <The quick
br> | 1: SBOL
0 <> <The quick
br> | 2: OPEN1
0 <> <The quick
br> | 4: PLUS
SANY can match 45 times out
of 32767...
Setting an EVAL scope, savestack=24
45 <e
lazy dawg
> <> | 6: CLOSE1
45 <e
lazy dawg
> <> | 8: EXACT <brown>
failed...
44 <e
lazy dawg> <
> | 6: CLOSE1
44 <e
lazy dawg> <
> | 8: EXACT <brown>
failed...
43 <e
lazy daw> <g
> | 6: CLOSE1
43 <e
lazy daw> <g
> | 8: EXACT <brown>
failed...
42 <e
lazy da> <wg
> | 6: CLOSE1
42 <e
lazy da> <wg
> | 8: EXACT <brown>
failed...
41 <e
lazy d> <awg
> | 6: CLOSE1
41 <e
lazy d> <awg
> | 8: EXACT <brown>
failed...
40 <e
lazy > <dawg
> | 6: CLOSE1
40 <e
lazy > <dawg
> | 8: EXACT <brown>
failed...
39 <e
lazy> < dawg
> | 6: CLOSE1
39 <e
lazy> < dawg
> | 8: EXACT <brown>
failed...
38 <e
laz> <y dawg
> | 6: CLOSE1
38 <e
laz> <y dawg
> | 8: EXACT <brown>
failed...
37 <he
la> <zy dawg> | 6: CLOSE1
37 <he
la> <zy dawg> | 8: EXACT <brown>
failed...
36 <the
l> <azy daw> | 6: CLOSE1
36 <the
l> <azy daw> | 8: EXACT <brown>
failed...
35 < the
> <lazy da> | 6: CLOSE1
35 < the
> <lazy da> | 8: EXACT <brown>
failed...
34 <r the> <
lazy d> | 6: CLOSE1
34 <r the> <
lazy d> | 8: EXACT <brown>
failed...
33 <er th> <e
lazy > | 6: CLOSE1
33 <er th> <e
lazy > | 8: EXACT <brown>
failed...
32 <ver t> <he
lazy> | 6: CLOSE1
32 <ver t> <he
lazy> | 8: EXACT <brown>
failed...
31 <over > <the
laz> | 6: CLOSE1
31 <over > <the
laz> | 8: EXACT <brown>
failed...
30 <
over> < the
la> | 6: CLOSE1
30 <
over> < the
la> | 8: EXACT <brown>
failed...
29 <s
ove> <r the
l> | 6: CLOSE1
29 <s
ove> <r the
l> | 8: EXACT <brown>
failed...
28 <ps
ov> <er the
> | 6: CLOSE1
28 <ps
ov> <er the
> | 8: EXACT <brown>
failed...
27 <mps
o> <ver the> | 6: CLOSE1
27 <mps
o> <ver the> | 8: EXACT <brown>
failed...
26 <umps
> <over th> | 6: CLOSE1
26 <umps
> <over th> | 8: EXACT <brown>
failed...
25 <jumps> <
over t> | 6: CLOSE1
25 <jumps> <
over t> | 8: EXACT <brown>
failed...
24 < jump> <s
over > | 6: CLOSE1
24 < jump> <s
over > | 8: EXACT <brown>
failed...
23 <x jum> <ps
over> | 6: CLOSE1
23 <x jum> <ps
over> | 8: EXACT <brown>
failed...
22 <ox ju> <mps
ove> | 6: CLOSE1
22 <ox ju> <mps
ove> | 8: EXACT <brown>
failed...
21 <fox j> <umps
ov> | 6: CLOSE1
21 <fox j> <umps
ov> | 8: EXACT <brown>
failed...
20 < fox > <jumps
o> | 6: CLOSE1
20 < fox > <jumps
o> | 8: EXACT <brown>
failed...
19 <n fox> < jumps
> | 6: CLOSE1
19 <n fox> < jumps
> | 8: EXACT <brown>
failed...
18 <wn fo> <x jumps> | 6: CLOSE1
18 <wn fo> <x jumps> | 8: EXACT <brown>
failed...
17 <own f> <ox jump> | 6: CLOSE1
17 <own f> <ox jump> | 8: EXACT <brown>
failed...
16 <rown > <fox jum> | 6: CLOSE1
16 <rown > <fox jum> | 8: EXACT <brown>
failed...
15 <brown> < fox ju> | 6: CLOSE1
15 <brown> < fox ju> | 8: EXACT <brown>
failed...
14 <
brow> <n fox j> | 6: CLOSE1
14 <
brow> <n fox j> | 8: EXACT <brown>
failed...
13 <k
bro> <wn fox > | 6: CLOSE1
13 <k
bro> <wn fox > | 8: EXACT <brown>
failed...
12 <ck
br> <own fox> | 6: CLOSE1
12 <ck
br> <own fox> | 8: EXACT <brown>
failed...
11 <ick
b> <rown fo> | 6: CLOSE1
11 <ick
b> <rown fo> | 8: EXACT <brown>
failed...
10 <uick
> <brown f> | 6: CLOSE1
10 <uick
> <brown f> | 8: EXACT <brown>
15 <brown> < fox ju> | 11: END
Match successful!
AFTER: The quick
purple fox jumps
over the
lazy dawg
==END ModAnyString()==
===Replace 'over' with 'into'===
BEFORE: The quick
brown fox jumps
over the
lazy dawg
Guessing start of match, REx `\A(.+)brown' against
`The quick
brown fox jumps
over the
lazy dawg
'...
Found floating substr `brown' at offset 10...
Guessed: match at offset 0
Matching REx `\A(.+)brown' against `The quick
brown fox jumps
over the
lazy dawg
'
Setting an EVAL scope, savestack=24
0 <> <The quick
br> | 1: SBOL
0 <> <The quick
br> | 2: OPEN1
0 <> <The quick
br> | 4: PLUS
SANY can match 45 times out
of 32767...
Setting an EVAL scope, savestack=24
45 <e
lazy dawg
> <> | 6: CLOSE1
45 <e
lazy dawg
> <> | 8: EXACT <brown>
failed...
44 <e
lazy dawg> <
> | 6: CLOSE1
44 <e
lazy dawg> <
> | 8: EXACT <brown>
failed...
43 <e
lazy daw> <g
> | 6: CLOSE1
43 <e
lazy daw> <g
> | 8: EXACT <brown>
failed...
42 <e
lazy da> <wg
> | 6: CLOSE1
42 <e
lazy da> <wg
> | 8: EXACT <brown>
failed...
41 <e
lazy d> <awg
> | 6: CLOSE1
41 <e
lazy d> <awg
> | 8: EXACT <brown>
failed...
40 <e
lazy > <dawg
> | 6: CLOSE1
40 <e
lazy > <dawg
> | 8: EXACT <brown>
failed...
39 <e
lazy> < dawg
> | 6: CLOSE1
39 <e
lazy> < dawg
> | 8: EXACT <brown>
failed...
38 <e
laz> <y dawg
> | 6: CLOSE1
38 <e
laz> <y dawg
> | 8: EXACT <brown>
failed...
37 <he
la> <zy dawg> | 6: CLOSE1
37 <he
la> <zy dawg> | 8: EXACT <brown>
failed...
36 <the
l> <azy daw> | 6: CLOSE1
36 <the
l> <azy daw> | 8: EXACT <brown>
failed...
35 < the
> <lazy da> | 6: CLOSE1
35 < the
> <lazy da> | 8: EXACT <brown>
failed...
34 <r the> <
lazy d> | 6: CLOSE1
34 <r the> <
lazy d> | 8: EXACT <brown>
failed...
33 <er th> <e
lazy > | 6: CLOSE1
33 <er th> <e
lazy > | 8: EXACT <brown>
failed...
32 <ver t> <he
lazy> | 6: CLOSE1
32 <ver t> <he
lazy> | 8: EXACT <brown>
failed...
31 <over > <the
laz> | 6: CLOSE1
31 <over > <the
laz> | 8: EXACT <brown>
failed...
30 <
over> < the
la> | 6: CLOSE1
30 <
over> < the
la> | 8: EXACT <brown>
failed...
29 <s
ove> <r the
l> | 6: CLOSE1
29 <s
ove> <r the
l> | 8: EXACT <brown>
failed...
28 <ps
ov> <er the
> | 6: CLOSE1
28 <ps
ov> <er the
> | 8: EXACT <brown>
failed...
27 <mps
o> <ver the> | 6: CLOSE1
27 <mps
o> <ver the> | 8: EXACT <brown>
failed...
26 <umps
> <over th> | 6: CLOSE1
26 <umps
> <over th> | 8: EXACT <brown>
failed...
25 <jumps> <
over t> | 6: CLOSE1
25 <jumps> <
over t> | 8: EXACT <brown>
failed...
24 < jump> <s
over > | 6: CLOSE1
24 < jump> <s
over > | 8: EXACT <brown>
failed...
23 <x jum> <ps
over> | 6: CLOSE1
23 <x jum> <ps
over> | 8: EXACT <brown>
failed...
22 <ox ju> <mps
ove> | 6: CLOSE1
22 <ox ju> <mps
ove> | 8: EXACT <brown>
failed...
21 <fox j> <umps
ov> | 6: CLOSE1
21 <fox j> <umps
ov> | 8: EXACT <brown>
failed...
20 < fox > <jumps
o> | 6: CLOSE1
20 < fox > <jumps
o> | 8: EXACT <brown>
failed...
19 <n fox> < jumps
> | 6: CLOSE1
19 <n fox> < jumps
> | 8: EXACT <brown>
failed...
18 <wn fo> <x jumps> | 6: CLOSE1
18 <wn fo> <x jumps> | 8: EXACT <brown>
failed...
17 <own f> <ox jump> | 6: CLOSE1
17 <own f> <ox jump> | 8: EXACT <brown>
failed...
16 <rown > <fox jum> | 6: CLOSE1
16 <rown > <fox jum> | 8: EXACT <brown>
failed...
15 <brown> < fox ju> | 6: CLOSE1
15 <brown> < fox ju> | 8: EXACT <brown>
failed...
14 <
brow> <n fox j> | 6: CLOSE1
14 <
brow> <n fox j> | 8: EXACT <brown>
failed...
13 <k
bro> <wn fox > | 6: CLOSE1
13 <k
bro> <wn fox > | 8: EXACT <brown>
failed...
12 <ck
br> <own fox> | 6: CLOSE1
12 <ck
br> <own fox> | 8: EXACT <brown>
failed...
11 <ick
b> <rown fo> | 6: CLOSE1
11 <ick
b> <rown fo> | 8: EXACT <brown>
failed...
10 <uick
> <brown f> | 6: CLOSE1
10 <uick
> <brown f> | 8: EXACT <brown>
15 <brown> < fox ju> | 11: END
Match successful!
AFTER: The quick
into fox jumps
over the
lazy dawg
==END ModAnyString()==
$ exit
script done on Wed 25 Jul 2001 03:41:41 AM MEST
---
Flags:
category=
severity=
---
Site configuration information for perl v5.6.1:
Configured by stuart at Sun Jul 22 02:48:43 MEST 2001.
Summary of my perl5 (revision 5.0 version 6 subversion
1) configuration:
Platform:
osname=solaris, osvers=2.8, archname=i86pc-solaris
uname='sunos oryx 5.8 generic_108529-05 i86pc i386
i86pc '
config_args='-Dcc=gcc'
hint=recommended, useposix=true,
d_sigaction=define
usethreads=undef use5005threads=undef
useithreads=undef usemultiplicity=undef
useperlio=undef d_sfio=undef uselargefiles=define
usesocks=undef
use64bitint=undef use64bitall=undef
uselongdouble=undef
Compiler:
cc='gcc', ccflags ='-DDEBUGGING
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O',
cppflags='-DDEBUGGING'
ccversion='', gccversion='2.95.2 19991024
(release)', gccosandvers='solaris2.8'
intsize=4, longsize=4, ptrsize=4, doublesize=8,
byteorder=1234
d_longlong=define, longlongsize=8,
d_longdbl=define, longdblsize=12
ivtype='long', ivsize=4, nvtype='double',
nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=4, usemymalloc=y, prototype=define
Linker and Libraries:
ld='gcc', ldflags =' -L/usr/local/lib '
libpth=/usr/local/lib /usr/lib /usr/ccs/lib
libs=-lsocket -lnsl -ldl -lm -lc
perllibs=-lsocket -lnsl -ldl -lm -lc
libc=/lib/libc.so, so=so, useshrplib=false,
libperl=libperl.a
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef,
ccdlflags=' '
cccdlflags='-fPIC', lddlflags='-G
-L/usr/local/lib'
Locally applied patches:
---
@INC for perl v5.6.1:
/usr/local/lib/perl5/5.6.1/i86pc-solaris
/usr/local/lib/perl5/5.6.1
/usr/local/lib/perl5/site_perl/5.6.1/i86pc-solaris
/usr/local/lib/perl5/site_perl/5.6.1
/usr/local/lib/perl5/site_perl
.
---
Environment for perl v5.6.1:
HOME=/home/stuart
LANG=en_US.ISO8859-1
LANGUAGE (unset)
LC_COLLATE=en_US.ISO8859-1
LC_CTYPE=en_US.ISO8859-1
LC_MESSAGES=C
LC_MONETARY=en_US.ISO8859-1
LC_NUMERIC=en_US.ISO8859-1
LC_TIME=en_US.ISO8859-1
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/usr/samba/bin:/opt/sfw/gnome/bin:/usr/j2se/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/opt/sfw/bin:/sbin:/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/bin:/usr/ucb:/usr/local/bin:.
PERL_BADLANG (unset)
SHELL=/bin/ksh
Complete configuration data for perl v5.6.1:
Author=''
CONFIG='true'
CONFIGDOTSH='true'
Date='$Date'
Header=''
Id='$Id'
Locker=''
Log='$Log'
Mcc='Mcc'
PATCHLEVEL='6'
PERL_API_REVISION='5'
PERL_API_SUBVERSION='0'
PERL_API_VERSION='5'
PERL_REVISION='5'
PERL_SUBVERSION='1'
PERL_VERSION='6'
RCSfile='$RCSfile'
Revision='$Revision'
SUBVERSION='1'
Source=''
State=''
_a='.a'
_exe=''
_o='.o'
afs='false'
alignbytes='4'
ansi2knr=''
aphostname='/usr/bin/hostname'
api_revision='5'
api_subversion='0'
api_version='5'
api_versionstring='5.005'
ar='ar'
archlib='/usr/local/lib/perl5/5.6.1/i86pc-solaris'
archlibexp='/usr/local/lib/perl5/5.6.1/i86pc-solaris'
archname='i86pc-solaris'
archname64=''
archobjs=''
awk='awk'
baserev='5.0'
bash=''
bin='/usr/local/bin'
bincompat5005='define'
binexp='/usr/local/bin'
bison='bison'
byacc='byacc'
byteorder='1234'
c='\c'
castflags='0'
cat='cat'
cc='gcc'
cccdlflags='-fPIC'
ccdlflags=' '
ccflags='-DDEBUGGING -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64'
ccflags_uselargefiles='-D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64'
ccname='gcc'
ccsymbols='__GNUC__=2 __GNUC_MINOR__=95 __i386=1
__i386__=1 __sun=1 __sun__=1 __SVR4=1 __svr4__=1
__unix=1 __unix__=1 cpu=i386 machine=i386 system=svr4'
ccversion=''
cf_by='stuart'
cf_email='stuart@oryx.onyx.ch'
cf_time='Sun Jul 22 02:48:43 MEST 2001'
charsize='1'
chgrp=''
chmod=''
chown=''
clocktype='clock_t'
comm='comm'
compress=''
config_arg0='Configure'
config_arg1='-Dcc=gcc'
config_argc='1'
config_args='-Dcc=gcc'
contains='grep'
cp='cp'
cpio=''
cpp='cpp'
cpp_stuff='42'
cppccsymbols='i386=1 sun=1 unix=1'
cppflags='-DDEBUGGING'
cpplast='-'
cppminus='-'
cpprun='gcc -E'
cppstdin='gcc -E'
cppsymbols='_FILE_OFFSET_BITS=64 __GNUC__=2
__GNUC_MINOR__=95 __i386=1 __i386__=1 _ILP32=1
_LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1
_LITTLE_ENDIAN=1 __STDC__=1 __sun=1 __sun__=1 __SVR4=1
__svr4__=1 __unix=1 __unix__=1'
crosscompile=''
cryptlib=''
csh='csh'
d_Gconvert='gconvert((x),(n),(t),(b))'
d_PRIEUldbl='define'
d_PRIFUldbl='define'
d_PRIGUldbl='define'
d_PRIXU64='define'
d_PRId64='define'
d_PRIeldbl='define'
d_PRIfldbl='define'
d_PRIgldbl='define'
d_PRIi64='define'
d_PRIo64='define'
d_PRIu64='define'
d_PRIx64='define'
d_SCNfldbl='define'
d__fwalk=''
d_access='define'
d_accessx=''
d_alarm='define'
d_archlib='define'
d_atolf=''
d_atoll='define'
d_attribut='define'
d_bcmp='define'
d_bcopy='define'
d_bincompat5005='define'
d_bsd=''
d_bsdgetpgrp=''
d_bsdsetpgrp=''
d_bzero='define'
d_casti32=''
d_castneg='define'
d_charvspr=''
d_chown='define'
d_chroot='define'
d_chsize=''
d_closedir='define'
d_const='define'
d_crypt='define'
d_csh='define'
d_cuserid='define'
d_dbl_dig='define'
d_difftime='define'
d_dirnamlen=''
d_dlerror='define'
d_dlopen='define'
d_dlsymun=''
d_dosuid=''
d_drand48proto='define'
d_dup2='define'
d_eaccess=''
d_endgrent='define'
d_endhent='define'
d_endnent='define'
d_endpent='define'
d_endpwent='define'
d_endsent='define'
d_eofnblk='define'
d_eunice=''
d_fchmod='define'
d_fchown='define'
d_fcntl='define'
d_fcntl_can_lock='define'
d_fd_macros='define'
d_fd_set='define'
d_fds_bits='define'
d_fgetpos='define'
d_flexfnam='define'
d_flock=''
d_fork='define'
d_fpathconf='define'
d_fpos64_t='define'
d_frexpl=''
d_fs_data_s=''
d_fseeko='define'
d_fsetpos='define'
d_fstatfs='define'
d_fstatvfs='define'
d_fsync='define'
d_ftello='define'
d_ftime=''
d_getcwd='define'
d_getespwnam=''
d_getfsstat=''
d_getgrent='define'
d_getgrps='define'
d_gethbyaddr='define'
d_gethbyname='define'
d_gethent='define'
d_gethname='define'
d_gethostprotos='define'
d_getlogin='define'
d_getmnt=''
d_getmntent='define'
d_getnbyaddr='define'
d_getnbyname='define'
d_getnent='define'
d_getnetprotos='define'
d_getpagsz='define'
d_getpbyname='define'
d_getpbynumber='define'
d_getpent='define'
d_getpgid='define'
d_getpgrp='define'
d_getpgrp2=''
d_getppid='define'
d_getprior='define'
d_getprotoprotos='define'
d_getprpwnam=''
d_getpwent='define'
d_getsbyname='define'
d_getsbyport='define'
d_getsent='define'
d_getservprotos='define'
d_getspnam='define'
d_gettimeod='define'
d_gnulibc=''
d_grpasswd='define'
d_hasmntopt='define'
d_htonl='define'
d_iconv='define'
d_index=''
d_inetaton=''
d_int64_t='define'
d_isascii='define'
d_isnan='define'
d_isnanl=''
d_killpg='define'
d_lchown='define'
d_ldbl_dig='define'
d_link='define'
d_locconv='define'
d_lockf='define'
d_longdbl='define'
d_longlong='define'
d_lseekproto='define'
d_lstat='define'
d_madvise='define'
d_mblen='define'
d_mbstowcs='define'
d_mbtowc='define'
d_memchr='define'
d_memcmp='define'
d_memcpy='define'
d_memmove='define'
d_memset='define'
d_mkdir='define'
d_mkdtemp=''
d_mkfifo='define'
d_mkstemp='define'
d_mkstemps=''
d_mktime='define'
d_mmap='define'
d_modfl=''
d_mprotect='define'
d_msg='define'
d_msg_ctrunc='define'
d_msg_dontroute='define'
d_msg_oob='define'
d_msg_peek='define'
d_msg_proxy=''
d_msgctl='define'
d_msgget='define'
d_msgrcv='define'
d_msgsnd='define'
d_msync='define'
d_munmap='define'
d_mymalloc='define'
d_nice='define'
d_nv_preserves_uv='define'
d_nv_preserves_uv_bits='32'
d_off64_t='define'
d_old_pthread_create_joinable=''
d_oldpthreads=''
d_oldsock=''
d_open3='define'
d_pathconf='define'
d_pause='define'
d_perl_otherlibdirs=''
d_phostname=''
d_pipe='define'
d_poll='define'
d_portable='define'
d_pthread_yield=''
d_pwage='define'
d_pwchange=''
d_pwclass=''
d_pwcomment='define'
d_pwexpire=''
d_pwgecos='define'
d_pwpasswd='define'
d_pwquota=''
d_qgcvt='define'
d_quad='define'
d_readdir='define'
d_readlink='define'
d_rename='define'
d_rewinddir='define'
d_rmdir='define'
d_safebcpy='define'
d_safemcpy=''
d_sanemcmp='define'
d_sbrkproto='define'
d_sched_yield=''
d_scm_rights='define'
d_seekdir='define'
d_select='define'
d_sem='define'
d_semctl='define'
d_semctl_semid_ds='define'
d_semctl_semun='define'
d_semget='define'
d_semop='define'
d_setegid='define'
d_seteuid='define'
d_setgrent='define'
d_setgrps='define'
d_sethent='define'
d_setlinebuf='define'
d_setlocale='define'
d_setnent='define'
d_setpent='define'
d_setpgid='define'
d_setpgrp='define'
d_setpgrp2=''
d_setprior='define'
d_setproctitle=''
d_setpwent='define'
d_setregid='define'
d_setresgid=''
d_setresuid=''
d_setreuid='define'
d_setrgid=''
d_setruid=''
d_setsent='define'
d_setsid='define'
d_setvbuf='define'
d_sfio=''
d_shm='define'
d_shmat='define'
d_shmatprototype='define'
d_shmctl='define'
d_shmdt='define'
d_shmget='define'
d_sigaction='define'
d_sigsetjmp='define'
d_socket='define'
d_socklen_t='define'
d_sockpair='define'
d_socks5_init=''
d_sqrtl=''
d_statblks='define'
d_statfs_f_flags=''
d_statfs_s='define'
d_statvfs='define'
d_stdio_cnt_lval='define'
d_stdio_ptr_lval='define'
d_stdio_ptr_lval_nochange_cnt='define'
d_stdio_ptr_lval_sets_cnt=''
d_stdio_stream_array='define'
d_stdiobase='define'
d_stdstdio='define'
d_strchr='define'
d_strcoll='define'
d_strctcpy='define'
d_strerrm='strerror(e)'
d_strerror='define'
d_strtod='define'
d_strtol='define'
d_strtold=''
d_strtoll='define'
d_strtoul='define'
d_strtoull='define'
d_strtouq=''
d_strxfrm='define'
d_suidsafe='define'
d_symlink='define'
d_syscall='define'
d_sysconf='define'
d_sysernlst=''
d_syserrlst='define'
d_system='define'
d_tcgetpgrp='define'
d_tcsetpgrp='define'
d_telldir='define'
d_telldirproto='define'
d_time='define'
d_times='define'
d_truncate='define'
d_tzname='define'
d_umask='define'
d_uname='define'
d_union_semun=''
d_ustat='define'
d_vendorarch=''
d_vendorbin=''
d_vendorlib=''
d_vfork=''
d_void_closedir=''
d_voidsig='define'
d_voidtty=''
d_volatile='define'
d_vprintf='define'
d_wait4='define'
d_waitpid='define'
d_wcstombs='define'
d_wctomb='define'
d_xenix=''
date='date'
db_hashtype='u_int32_t'
db_prefixtype='size_t'
defvoidused='15'
direntrytype='struct dirent'
dlext='so'
dlsrc='dl_dlopen.xs'
doublesize='8'
drand01='drand48()'
dynamic_ext='B ByteLoader Data/Dumper Devel/DProf
Devel/Peek Fcntl File/Glob IO IPC/SysV NDBM_File
ODBM_File Opcode POSIX SDBM_File Socket Sys/Hostname
Sys/Syslog attrs re'
eagain='EAGAIN'
ebcdic=''
echo='echo'
egrep='egrep'
emacs=''
eunicefix=':'
exe_ext=''
expr='expr'
extensions='B ByteLoader Data/Dumper Devel/DProf
Devel/Peek Fcntl File/Glob IO IPC/SysV NDBM_File
ODBM_File Opcode POSIX SDBM_File Socket Sys/Hostname
Sys/Syslog attrs re Errno'
fflushNULL=''
fflushall=''
find=''
firstmakefile='makefile'
flex=''
fpossize='8'
fpostype='fpos_t'
freetype='void'
full_ar='/usr/ccs/bin/ar'
full_csh='/usr/bin/csh'
full_sed='/usr/bin/sed'
gccosandvers='solaris2.8'
gccversion='2.95.2 19991024 (release)'
gidformat='"ld"'
gidsign='-1'
gidsize='4'
gidtype='gid_t'
glibpth='/usr/shlib /usr/lib /usr/lib/386 /lib/386
/usr/ccs/lib /usr/local/lib'
grep='grep'
groupcat='cat /etc/group'
groupstype='gid_t'
gzip='gzip'
h_fcntl='true'
h_sysfile='false'
hint='recommended'
hostcat='cat /etc/hosts'
i16size='2'
i16type='short'
i32size='4'
i32type='long'
i64size='8'
i64type='long long'
i8size='1'
i8type='char'
i_arpainet='define'
i_bsdioctl=''
i_db=''
i_dbm=''
i_dirent='define'
i_dld=''
i_dlfcn='define'
i_fcntl='define'
i_float='define'
i_gdbm=''
i_grp='define'
i_iconv='define'
i_ieeefp='define'
i_inttypes='define'
i_libutil=''
i_limits='define'
i_locale='define'
i_machcthr=''
i_malloc='define'
i_math='define'
i_memory=''
i_mntent=''
i_ndbm='define'
i_netdb='define'
i_neterrno=''
i_netinettcp='define'
i_niin='define'
i_poll='define'
i_prot=''
i_pthread='define'
i_pwd='define'
i_rpcsvcdbm='define'
i_sfio=''
i_sgtty=''
i_shadow='define'
i_socks=''
i_stdarg='define'
i_stddef='define'
i_stdlib='define'
i_string='define'
i_sunmath=''
i_sysaccess=''
i_sysdir=''
i_sysfile=''
i_sysfilio='define'
i_sysin=''
i_sysioctl='define'
i_syslog='define'
i_sysmman='define'
i_sysmode='define'
i_sysmount='define'
i_sysndir=''
i_sysparam='define'
i_sysresrc='define'
i_syssecrt=''
i_sysselct='define'
i_syssockio=''
i_sysstat='define'
i_sysstatfs='define'
i_sysstatvfs='define'
i_systime='define'
i_systimek=''
i_systimes='define'
i_systypes='define'
i_sysuio='define'
i_sysun='define'
i_sysutsname='define'
i_sysvfs='define'
i_syswait='define'
i_termio=''
i_termios='define'
i_time=''
i_unistd='define'
i_ustat='define'
i_utime='define'
i_values='define'
i_varargs=''
i_varhdr='stdarg.h'
i_vfork=''
ignore_versioned_solibs=''
inc_version_list=' '
inc_version_list_init='0'
incpath=''
inews=''
installarchlib='/usr/local/lib/perl5/5.6.1/i86pc-solaris'
installbin='/usr/local/bin'
installman1dir='/usr/local/man/man1'
installman3dir='/usr/local/man/man3'
installprefix='/usr/local'
installprefixexp='/usr/local'
installprivlib='/usr/local/lib/perl5/5.6.1'
installscript='/usr/local/bin'
installsitearch='/usr/local/lib/perl5/site_perl/5.6.1/i86pc-solaris'
installsitebin='/usr/local/bin'
installsitelib='/usr/local/lib/perl5/site_perl/5.6.1'
installstyle='lib/perl5'
installusrbinperl='define'
installvendorarch=''
installvendorbin=''
installvendorlib=''
intsize='4'
issymlink='test -h'
ivdformat='"ld"'
ivsize='4'
ivtype='long'
known_extensions='B ByteLoader DB_File Data/Dumper
Devel/DProf Devel/Peek Fcntl File/Glob GDBM_File IO
IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File
Socket Sys/Hostname Sys/Syslog Thread attrs re'
ksh=''
ld='gcc'
lddlflags='-G -L/usr/local/lib'
ldflags=' -L/usr/local/lib '
ldflags_uselargefiles=''
ldlibpthname='LD_LIBRARY_PATH'
less='less'
lib_ext='.a'
libc='/lib/libc.so'
libperl='libperl.a'
libpth='/usr/local/lib /usr/lib /usr/ccs/lib'
libs='-lsocket -lnsl -ldl -lm -lc'
libsdirs=' /usr/lib'
libsfiles=' libsocket.so.1 libnsl.so.1 libdl.so.1
libm.so.1 libc.so.1'
libsfound=' /usr/lib/libsocket.so.1
/usr/lib/libnsl.so.1 /usr/lib/libdl.so.1
/usr/lib/libm.so.1 /usr/lib/libc.so.1'
libspath=' /usr/local/lib /usr/lib /usr/ccs/lib'
libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm
db dl dld sun m c cposix posix ndir dir bsd BSD PW x
iconv util '
libswanted_uselargefiles=''
line=''
lint=''
lkflags=''
ln='ln'
lns='/usr/bin/ln -s'
locincpth='/usr/local/include /opt/local/include
/usr/gnu/include /opt/gnu/include /usr/GNU/include
/opt/GNU/include'
loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib
/opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
longdblsize='12'
longlongsize='8'
longsize='4'
lp=''
lpr=''
ls='ls'
lseeksize='8'
lseektype='off_t'
mail=''
mailx=''
make='make'
make_set_make='#'
mallocobj='malloc.o'
mallocsrc='malloc.c'
malloctype='void *'
man1dir='/usr/local/man/man1'
man1direxp='/usr/local/man/man1'
man1ext='1'
man3dir='/usr/local/man/man3'
man3direxp='/usr/local/man/man3'
man3ext='3'
mips_type=''
mkdir='mkdir'
mmaptype='caddr_t'
modetype='mode_t'
more='more'
multiarch=''
mv=''
myarchname='i86pc-solaris'
mydomain='.onyx.ch'
myhostname='oryx'
myuname='sunos oryx 5.8 generic_108529-05 i86pc i386
i86pc '
n=''
netdb_hlen_type='int'
netdb_host_type='const char *'
netdb_name_type='const char *'
netdb_net_type='in_addr_t'
nm='nm'
nm_opt='-p'
nm_so_opt=''
nonxs_ext='Errno'
nroff='nroff'
nvEUformat='"E"'
nvFUformat='"F"'
nvGUformat='"G"'
nveformat='"e"'
nvfformat='"f"'
nvgformat='"g"'
nvsize='8'
nvtype='double'
o_nonblock='O_NONBLOCK'
obj_ext='.o'
old_pthread_create_joinable=''
optimize='-O'
orderlib='false'
osname='solaris'
osvers='2.8'
otherlibdirs=' '
package='perl5'
pager='/usr/bin/less'
passcat='cat /etc/passwd'
patchlevel='6'
path_sep=':'
perl=''
perl5='/usr/local/bin/perl'
perladmin='stuart@oryx.onyx.ch'
perllibs='-lsocket -lnsl -ldl -lm -lc'
perlpath='/usr/local/bin/perl'
pg='pg'
phostname='hostname'
pidtype='pid_t'
plibpth=''
pm_apiversion='5.005'
pmake=''
pr=''
prefix='/usr/local'
prefixexp='/usr/local'
privlib='/usr/local/lib/perl5/5.6.1'
privlibexp='/usr/local/lib/perl5/5.6.1'
prototype='define'
ptrsize='4'
quadkind='3'
quadtype='long long'
randbits='48'
randfunc='drand48'
randseedtype='long'
ranlib=':'
rd_nodata='-1'
revision='5'
rm='rm'
rmail=''
runnm='true'
sPRIEUldbl='"LE"'
sPRIFUldbl='"LF"'
sPRIGUldbl='"LG"'
sPRIXU64='"llX"'
sPRId64='"lld"'
sPRIeldbl='"Le"'
sPRIfldbl='"Lf"'
sPRIgldbl='"Lg"'
sPRIi64='"lli"'
sPRIo64='"llo"'
sPRIu64='"llu"'
sPRIx64='"llx"'
sSCNfldbl='"Lf"'
sched_yield=''
scriptdir='/usr/local/bin'
scriptdirexp='/usr/local/bin'
sed='sed'
seedfunc='srand48'
selectminbits='32'
selecttype='fd_set *'
sendmail=''
sh='/bin/sh'
shar=''
sharpbang='#!'
shmattype='void *'
shortsize='2'
shrpenv=''
shsharp='true'
sig_count='46'
sig_name='ZERO HUP INT QUIT ILL TRAP ABRT EMT FPE KILL
BUS SEGV SYS PIPE ALRM TERM USR1 USR2 CHLD PWR WINCH
URG IO STOP TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ
WAITING LWP FREEZE THAW CANCEL LOST RTMIN NUM39 NUM40
NUM41 NUM42 NUM43 NUM44 RTMAX IOT CLD POLL '
sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL",
"TRAP", "ABRT", "EMT", "FPE", "KILL", "BUS", "SEGV",
"SYS", "PIPE", "ALRM", "TERM", "USR1", "USR2", "CHLD",
"PWR", "WINCH", "URG", "IO", "STOP", "TSTP", "CONT",
"TTIN", "TTOU", "VTALRM", "PROF", "XCPU", "XFSZ",
"WAITING", "LWP", "FREEZE", "THAW", "CANCEL", "LOST",
"RTMIN", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43",
"NUM44", "RTMAX", "IOT", "CLD", "POLL", 0'
sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
36 37 38 39 40 41 42 43 44 45 6 18 22 '
sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 6, 18, 22, 0'
signal_t='void'
sitearch='/usr/local/lib/perl5/site_perl/5.6.1/i86pc-solaris'
sitearchexp='/usr/local/lib/perl5/site_perl/5.6.1/i86pc-solaris'
sitebin='/usr/local/bin'
sitebinexp='/usr/local/bin'
sitelib='/usr/local/lib/perl5/site_perl/5.6.1'
sitelib_stem='/usr/local/lib/perl5/site_perl'
sitelibexp='/usr/local/lib/perl5/site_perl/5.6.1'
siteprefix='/usr/local'
siteprefixexp='/usr/local'
sizesize='4'
sizetype='size_t'
sleep=''
smail=''
so='so'
sockethdr=''
socketlib=''
socksizetype='int'
sort='sort'
spackage='Perl5'
spitshell='cat'
src='.'
ssizetype='ssize_t'
startperl='#!/usr/local/bin/perl'
startsh='#!/bin/sh'
static_ext=' '
stdchar='unsigned char'
stdio_base='((fp)->_base)'
stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)'
stdio_cnt='((fp)->_cnt)'
stdio_filbuf=''
stdio_ptr='((fp)->_ptr)'
stdio_stream_array='__iob'
strings='/usr/include/string.h'
submit=''
subversion='1'
sysman='/usr/man/man1'
tail=''
tar=''
tbl=''
tee=''
test='test'
timeincl='/usr/include/sys/time.h '
timetype='time_t'
touch='touch'
tr='tr'
trnl='\n'
troff=''
u16size='2'
u16type='unsigned short'
u32size='4'
u32type='unsigned long'
u64size='8'
u64type='unsigned long long'
u8size='1'
u8type='unsigned char'
uidformat='"ld"'
uidsign='-1'
uidsize='4'
uidtype='uid_t'
uname='uname'
uniq='uniq'
uquadtype='unsigned long long'
use5005threads=''
use64bitall=''
use64bitint=''
usedl='define'
useithreads=''
uselargefiles='define'
uselongdouble=''
usemorebits=''
usemultiplicity=''
usemymalloc='y'
usenm='true'
useopcode='true'
useperlio=''
useposix='true'
usesfio='false'
useshrplib='false'
usesocks=''
usethreads=''
usevendorprefix=''
usevfork='false'
usrinc='/usr/include'
uuname=''
uvXUformat='"lX"'
uvoformat='"lo"'
uvsize='4'
uvtype='unsigned long'
uvuformat='"lu"'
uvxformat='"lx"'
vendorarch=''
vendorarchexp=''
vendorbin=''
vendorbinexp=''
vendorlib=''
vendorlib_stem=''
vendorlibexp=''
vendorprefix=''
vendorprefixexp=''
version='5.6.1'
versiononly=''
vi=''
voidflags='15'
xlibpth='/usr/lib/386 /lib/386'
xs_apiversion='5.005'
yacc='yacc'
yaccflags=''
zcat=''
zip='zip'
__________________________________________________
Do You Yahoo!?
Make international calls for as low as $.04/minute with Yahoo! Messenger
http://phonecard.yahoo.com/
Thread Next
-
[ID 20010724.007] REGEXP bug in perl 5.6.1
by stuart lory