See inline.

------------------------------------------------
On Fri, 17 Jan 2003 11:01:58 -0500, "Le Blanc, Kerry (Kerry)" <[EMAIL PROTECTED]> 
wrote:

> I think I am getting close. With much help I have been able to tweek my original 
>code down quite a bit. For the most part, everything is working as it should. What is 
>stumping me right now is, how do I make sure that both the part number and the rev 
>match before printing out the record. The part number is in $fields[0], the rev is in 
>$fields[1]. The two fields are seperated by a pipe. I am attempting to send both 
>inputs to the subroutine as arguments. thanks for any hints towards the right 
>direction.
>  
>  
> #!/usr/bin/perl -w
>  
> use strict;
> use Data::Dumper;
>  
> 
> print "Enter the Part Number you wish to search for: ";
> my $part = <STDIN>;
>     chomp($part);
>     
> print "Enter the Revison for ($part): ";
> my $rev = <STDIN>;
>            chomp($rev);
>  
> my $searchresult = &search(part => $part, rev => $rev);
>  
> 
> if (defined $searchresult) {
>  print "Located Part Number $part: $$searchresult[1]\n";<-- How can I print all the 
>fields without typing in each field
> }else {                                                       individually?
>  print "Your Part Number ($part) could not be found...\n";
> }
>  
> # This routine will accept a part number and rev as anonymous
> # hashes, and search thru a text file returning the entire
> # record (pipe delineated) of the 1st occurence
>  

Actually it is just accepting a list, which it is automagically turning into a hash 
(plain not anonymous) for you.

> sub search {
>  my %args = @_;
>  my $retval;
>  
>  local *FH;
>  open (FH, './fai.txt') || die "Cannot open file: ($!)";
>  my @parts = <FH>;
>  my @rev = <FH>;

This stores two copies of the file in memory, do you need two copies?

>  foreach my $line (@parts, @rev) {

This (I believe) is going to combine @parts and @rev so you will step through the file 
twice.  Are you expecting alternating lines in the file?

>   my @fields = split(/\|/, $line);
>   if ($args{part} eq $fields[0], $fields[1]) { 

    if (($args{'part'} eq $fields[0]) && ($args{'rev'} eq $fields[1])) {

>    $retval = \@fields;
>    last;
>   }
>  }
>  close FH;
>  return $retval;
> }
> 

http://danconia.org

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to