Hi, (excuse my poor English, I hope it will be still intelligible ;-) I want to use Perl for some substitutions on large texts, but it seems to me that perl does not correctly free memory after evaluating r.e. with parentheses (see below). Problem is solved by using eval statement around r.e. -- it's imho rather complicated solution, but I haven't found any other way. Thank you for improvement suggestions. P. whatever$ cat a.pl #!/usr/bin/perl -w $_ = ' ' x 1024000; warn `ps -p $$ -o vsz=`; /()/; warn `ps -p $$ -o vsz=`; /( )/; warn `ps -p $$ -o vsz=`; s/()//; warn `ps -p $$ -o vsz=`; s/( )//; warn `ps -p $$ -o vsz=`; /(?: )/; warn `ps -p $$ -o vsz=`; sunos$ uname -rs SunOS 5.7 sunos$ perl -v | grep 'version' This is perl, version 5.005_03 built for sun4-solaris sunos$ perl a.pl 4640 5616 6640 7672 8696 8696 irix$ uname -rs IRIX64 6.5 irix$ perl -v | grep 'version' This is perl, version 5.004_04 built for IP19-irix irix$ perl a.pl 4800 5824 6848 8896 9920 9920 linux$ uname -rs Linux 2.2.18pre21 linux$ perl -v | grep 'version' This is perl, version 5.005_03 built for i386-linux linux$ perl a.pl 4464 5468 6472 7476 8480 8480 And on Windows NT Server 4.0 SP6 with ActivePerl 5.6 using pslist from sysinternals.com: C:\>type a.pl #!/usr/bin/perl -w $_ = ' ' x 1024000; warn join "\n", grep ($_ =~ /$$|Name/, split /\n/, `pslist $$`), ""; /()/; warn grep ($_ =~ /$$/, split /\n/, `pslist $$`), "\n"; /( )/; warn grep ($_ =~ /$$/, split /\n/, `pslist $$`), "\n"; s/()//; warn grep ($_ =~ /$$/, split /\n/, `pslist $$`), "\n"; s/( )//; warn grep ($_ =~ /$$/, split /\n/, `pslist $$`), "\n"; /(?: )/; warn grep ($_ =~ /$$/, split /\n/, `pslist $$`), "\n"; C:\>perl -v | grep "buil" File STDIN: This is perl, v5.6.0 built for MSWin32-x86-multi-thread Binary build 613 provided by ActiveState Tool Corp. http://www.ActiveState.com C:\>perl a.pl Name Pid Pri Thd Hnd Mem User Time Kernel Time Elapsed Time Perl 302 8 1 17 3716 0:00:00.070 0:00:00.060 0:00:00.570 Perl 302 8 1 17 4776 0:00:00.090 0:00:00.080 0:00:01.091 Perl 302 8 1 17 5792 0:00:00.110 0:00:00.100 0:00:01.602 Perl 302 8 1 17 6796 0:00:00.130 0:00:00.120 0:00:02.123 Perl 302 8 1 17 7812 0:00:00.140 0:00:00.160 0:00:02.643 Perl 302 8 1 17 7812 0:00:00.140 0:00:00.180 0:00:03.134