Just a couple of questions about your corrections: (All snippets are taken from the e-mail below.)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Shawn: > sub parseFrom400 { > my $value = @_[0]; ^^^^^ John: You want a scalar here, not an array slice. my $value = $_[0]; Shawn: Okay. I just put this in because I saw the syntax somewhere else. Why is this better? It works fine as it is. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Shawn: > my $delimiter = substr($value, 3, 1); > if ($delimiter =~ /[0-9]./){ ^ John: Do you want to match any character except newline here or a literal dot? Since $delimiter only contains one character trying to match two characters will never work. if ( $delimiter =~ /\d/ ) { Shawn: I wanted to find out if the character is numeric. I see that your line above is exactly what I really wanted. It seems to be working, though. The database I'm ultimately populating with this data seems to be okay. Does what I wrote do the same thing, although in an ugly way? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Thank you, Shawn [EMAIL PROTECTED] g To: [EMAIL PROTECTED] cc: 10/17/2002 bcc: 04:57 PM Subject: Re: How can I open and read two files at once in a loop? -- Thanks, and also here's a snippet someone may fine useful... Shawn Milochik wrote: > > I am working on a project which involves downloading files via FTP from an > AS/400, and I had to write a couple of functions because of the weird way > IBM does things. > > The first function takes a value, and dependent upon the final character, > does something to it. > > Rules: > 1. If it is a letter, the letter represents a specific decimal amount, and > the number is negative. > example: 4L = -3.7, or 6R = -6.3 <-- Note: these are not the actual > numbers corresponding to the letters, I have the sub figure that out. > > 2. The close curly-brace '}' denotes that the value is negative. > example: 4} = -4 > > 3. All numeric means that the final character is the decimal amount. > example 43 = 4.3 > > The second function checks to see if the final character is numeric. If it > is not, the final character is a stand-in for a digit, and the entire > statement is negative. Otherwise, the number stays as is. > examples: 345M = -3452, 5634 = 5634 > > Hope this is useful to someone. If not, maybe someone already has a > resource for converting "mainframe" data types. If they do, I'd like to > know about it. > > sub parseFrom400 { > my $value = @_[0]; ^^^^^ You want a scalar here, not an array slice. my $value = $_[0]; > my $delimiter = substr($value, 3, 1); > if ($delimiter =~ /[0-9]./){ ^ Do you want to match any character except newline here or a literal dot? Since $delimiter only contains one character trying to match two characters will never work. if ( $delimiter =~ /\d/ ) { > $value = substr($value, 0, 3); > } > if ($delimiter =~ /[J-R]/){ > my $tempChar = ord($delimiter) - 73; > $value += ($tempChar/10); > $value = 0 - $value; ^^^ No need for the zero here. $value = -$value; > }else{ > if ($delimiter eq "}"){ > $value = 0 - $value; $value = -$value; > }else{ > $value = $value/10; Can be shortened to: $value /= 10; > } > } > > return $value; > } > > sub parseFrom400_2 { > my $value = @_[0]; my $value = $_[0]; > my $delimiter = substr($value, 7, 1); > > if ($delimiter =~ /[J-R]/){ > my $tempChar = ord($delimiter) - 73; > $value *= 10; > $value += $tempChar; > $value = 0 - $value; $value = -$value; > } > > return $value; > } John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] ********************************************************************** This e-mail and any files transmitted with it may contain confidential information and is intended solely for use by the individual to whom it is addressed. If you received this e-mail in error, please notify the sender, do not disclose its contents to others and delete it from your system. ********************************************************************** -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]