Mumia,
thanks for your work on answering my help request. I really
appreciate it. However, while your solution works perfectly in your
sample program, since I am new to perl, I am having trouble
understanding some of the techniques you used, and i am having trouble
integrating the solution that you came up with into my own program.
how do i get all of this inside my if statement? I don't understand
why the second line works(I know its comparing the values for
greater/lesser, but not how in the world perl is interpreting it, if
i'm making any sense)
what are the ':'s doing?, and lastly, what is eg?
i know you spent too much time on this already, but i'd really
appreciate you clearing this up for me. this stuff isn't in my perl
book. . .
########
$str =~ s/(?:(\d+)-(\d+)|(\d+));?/
$3 ? '' : ($2 > $1 ? '' : 'y')
/eg;
'' eq $str;
########
my program
######################
foreach ($temp2 = <>) {
$list1 = $temp2;
if ($list1 =~ /regex/){
print "yay\n";
}else {print "boo\n";};
######################
Mumias solution:
##########################
our ($datastr, @F);
my @data = \('1-10;25;33;100-250', '1-10;25;33;x100-250',
'1-10;25;33;100-250-90', '1-10;25;33-9-18;100-250',
'1-10;25;33-18;100-250');
my @checkranges;
push @checkranges, sub {
# F1: Okay
my $str = shift;
$str =~ s/(\d+-\d+|\d+);?//g;
'' eq $str;
};
push @checkranges, sub {
# F2: Buggy
my $str = shift;
$str =~ m/^((\d+-\d+|\d+);?)+$/g;
};
push @checkranges, sub {
# F3: Okay
my $str = shift;
$str =~ m/^((\d+-\d+|\d+)(;|$))+$/g;
};
push @checkranges, sub {
# F4: Okay, the best; it checks ranges.
my $str = shift;
$str =~ s/(?:(\d+)-(\d+)|(\d+));?/
$3 ? '' : ($2 > $1 ? '' : 'y')
/eg;
'' eq $str;
};
my $truefalse = sub {
shift() ? 'true' : 'false';
};
$~ = 'FUNFORMAT';
$datastr = \'STRING';
@F = qw(FUNC-1 FUNC-2 FUNC-3 FUNC-4);
write;
for $datastr (@data) {
@F = ();
push @F, $truefalse->($_->($$datastr)) for
(@checkranges);
write;
}
format FUNFORMAT =
@<<<<<<<<<<<<<<<<<<<<< @<<<<<<<< @<<<<<<<< @<<<<<<<< @<<<<<<<
$$datastr, $F[0], $F[1], $F[2], $F[3]
.
__END__
Output:
STRING FUNC-1 FUNC-2 FUNC-3 FUNC-4
1-10;25;33;100-250 true true true true
1-10;25;33;x100-250 false false false false
1-10;25;33;100-250-90 false true false false
1-10;25;33-9-18;100-25 false false false false
1-10;25;33-18;100-250 true true true false
################################
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>