On Thu, 2006-06-04 at 22:29 +1000, Owen wrote:
> I would like to accept monetary values like
>
> $234.00
> $2678
>
> but not values with letters like
>
> $333.oo
>
> This script below almost works, but I can't get it to catch the $40o.89
>
> Is there a simpler way to do this and catch all the conditions?
>
> TIA
>
> Owen
>
>
> #!/usr/bin/perl
>
> while (<DATA>){
> chomp;
> $payment=$_;
>
> unless (($payment =~ /\$[\d,]+\.\d{2}/)
> or ($payment =~ /\$[\d,]+/)
or( $payment =~ /\$[\d,]+\b/ )
# \b is a word boundary, an alphanumeric character
# followed by a non-alphanumeric character
# or vice versa.
> and ($payment !~ /\$[\d,]+\.\D{2}/))
> {print "$payment seems to be an invalid amount\n";}
>
> }
> __DATA__
> $122.30
> $40o.89
> $20
> $2222.oo
>
--
__END__
Just my 0.00000002 million dollars worth,
--- Shawn
"For the things we have to learn before we can do them, we learn by doing them."
Aristotle
* Perl tutorials at http://perlmonks.org/?node=Tutorials
* A searchable perldoc is at http://perldoc.perl.org/
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>