On 4/20/05, Keith Worthington wrote: > Hi All, > > Here is my code so far. I am really getting frustrated with my inability to > get this right. > > I didn't understand Chris' earlier suggestion about using defined but I tried > using it anyway. > > I cannot seem to get the pattern match to properly handle a dimension that is > just feet or just inches. > > I would really appreciate some pointers on this problem. >
Hi Keith, I assumed from your question that your main problem now is in handling the size part ( what you called $v_size_str) and splitting it up into 4 parts - a first dimension feet and inches and a second dimension feet and inches. So here is some code to help you out. It doesn't break any of the parts into sub-parts (e.g. 28-3/8 into the 3 numbers) but I assume you can do that yourself. It also assumes you already have a variable holding just the size part. For convenience (mine :-)), the code reads from __DATA__ and assigns to $_ instead of $v_size_str, but you shouldn't have any trouble modifing it. Here's the code: ############# begin code use strict; use warnings; while (<DATA>) { chomp; my ($dim1,$dim2) = split /\s*x\s*/i; print "==$dim1== ==$dim2==\n"; my ($dim1_feet, $dim1_inches) = get_sub_dims($dim1); my ($dim2_feet, $dim2_inches) = get_sub_dims($dim2); print "The sub-dims are: $dim1_feet, $dim1_inches, $dim2_feet, $dim2_inches\n"; } sub get_sub_dims { my $dim = shift; my ($feet, $inches) = (0,0); if ($dim =~ m/^\s*(.+?)'/) { $feet = $1; $dim =~ s/^\s*(.+?)'\s*//; } if ($dim =~ m/^\s*(.+?)"/) { $inches = $1; } return ($feet, $inches); } __DATA__ 9' x 25' 7'6" x 12'7" 7'10" x 16' 83' X 40" 17' x 50' 5' X 90'6" 39" X 100" 30" x 12' 28-3/8" x 14'4" 16' 6-3/4" x 43" 21'3 1/2" x 24' 14'8.5" x 16'7" ############# end code If anything in the code isn't clear, please don't hesitate to ask. HTH, -- Offer Kaye -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>