Connecting Tech Pros Worldwide Help | Site Map

Maximum length for a match

Paul Johnston
Guest
 
Posts: n/a
#1: Nov 28 '06
I know this may sound silly but given something like

if ($_ =~m/(one)|(two)|(three)/)

Is there a maximum length on the size of the item between "/" and" /"
?
Just curious as regards showing bad programming techniques.

TIA Paul
Jim Gibson
Guest
 
Posts: n/a
#2: Nov 28 '06

re: Maximum length for a match


In article <70rom2lojv0gj1mgclvar242bb7q3l4ppm@4ax.com>, Paul Johnston
<paul.johnston@manchester.ac.ukwrote:
Quote:
I know this may sound silly but given something like
>
if ($_ =~m/(one)|(two)|(three)/)
>
Is there a maximum length on the size of the item between "/" and" /"
?
Just curious as regards showing bad programming techniques.
There is no inherent limit. You are limited by your available memory
for Perl scalars. You can test this easily:

#!/usr/local/bin/perl

use strict;
use warnings;

my $re;
for my $x ( 'aaaa' .. 'zzzz' ) {
$re .= "($x)|";
}
my $s = 'XXXXX';
$re .= "($s)";
print "Length of RE = ", length($re), "\n";
if( $s =~ m/$re/ ) {
print "Match: $&\n";
}

__OUTPUT__

Length of RE = 3198839
Match: XXXXX


FYI: this newsgroup is defunct. Try comp.lang.perl.misc in the future.
Paul Johnston
Guest
 
Posts: n/a
#3: Nov 29 '06

re: Maximum length for a match


On Tue, 28 Nov 2006 10:21:50 -0800, Jim Gibson
<jgibson@mail.arc.nasa.govwrote:
Quote:
>In article <70rom2lojv0gj1mgclvar242bb7q3l4ppm@4ax.com>, Paul Johnston
><paul.johnston@manchester.ac.ukwrote:
>
Quote:
>I know this may sound silly but given something like
>>
>if ($_ =~m/(one)|(two)|(three)/)
>>
>Is there a maximum length on the size of the item between "/" and" /"
>?
>Just curious as regards showing bad programming techniques.
>
>There is no inherent limit. You are limited by your available memory
>for Perl scalars. You can test this easily:
>
>#!/usr/local/bin/perl
>
>use strict;
>use warnings;
>
>my $re;
>for my $x ( 'aaaa' .. 'zzzz' ) {
$re .= "($x)|";
>}
>my $s = 'XXXXX';
>$re .= "($s)";
>print "Length of RE = ", length($re), "\n";
>if( $s =~ m/$re/ ) {
print "Match: $&\n";
>}
>
>__OUTPUT__
>
>Length of RE = 3198839
>Match: XXXXX
>
>
>FYI: this newsgroup is defunct. Try comp.lang.perl.misc in the future.
Many Thanks
Closed Thread