Hi all

I have some code (seen below) and for some reason it runs really, sllooooowwww. I have narrowed it down to the $p110rm0X eq $roomName. In the subroutine compareRmNames

So basically my question is, is there a way to quicken the compare the two strings.
I have commented out the adding the value to a new array.

Also I need to state, please dont shoot me on this code, I just got passed on too.

If anyone can help, it would be most appreciated.

Kind Regards
Brent Clark

#------------------------------------------------------------------------------------------
        sub updateDatFile {
#------------------------------------------------------------------------------------------

                        foreach my $fileName ( keys %$ref_allTariffData ){      
                                                                                
                                next unless -e "$fileName.dat";
open (HDATFILE, "<$fileName.dat") or die "Cant open file $fileName.dat $!";

                                print " Opened $fileName.dat <br />\n";
                                flock (HDATFILE, LOCK_SH) or die "Cant lock file 
$fileName.dat $!";
                                        while(<HDATFILE>){
                                                chomp;
                                                if(m/^(p110|p111|p116)/o){
                                                        print 
&compareRmNames($fileName, $_);
                                                }else{
                                                        print TEMPHDATFILE 
"$_\n";
                                                }
                                        }

                                flock (HDATFILE, LOCK_UN) or die "Cant unlock file 
$fileName.dat $!";
                                close (HDATFILE) or die "Cant close file 
$fileName.dat $!";
                }
#------------------------------------------------------------------------------------------
        }
#------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------
        sub compareRmNames {
#------------------------------------------------------------------------------------------
                        my ($fileName, $currentLine) = @_;
                        my @resultant = ();
                        my @keys = ();
                        my $roomName = shift;
                        @linex = split(/\|/, $currentLine);

                        if ( $currentLine =~ m/^p110/io ){
                                &p110;
                        }elsif( $currentLine =~ m/^p111/io ){
                                &p111;
                        }elsif( $currentLine =~ m/^p116/io ){
                                &p116;
                        }
                        foreach my $roomName ( keys %{ 
$ref_allTariffData->{$fileName} } ){

                                $roomCode =  
$ref_allTariffData->{$fileName}{$roomName};
                                print "Room $roomCode <br />\n";

                                if( $p110key eq 'p110'){                        
                                #Speed problem starts here
                                        if ($p110rm01 eq $roomName ){
#                                               $resultant[0] = "$roomName|";
#                                               $keys[0]        = "$roomCode|";
                                        }elsif ($p110rm02 eq $roomName){
#                                               $resultant[1] = "$roomName|";
#                                               $keys[1]        = "$roomCode|";
                                        }elsif ($p110rm03 eq $roomName){
#                                               $resultant[2] = "$roomName|";
#                                               $keys[2]        = "$roomCode|";
                                        }elsif ($p110rm04 eq $roomName){
#                                               $resultant[3] = "$roomName|";
#                                               $keys[3]        = "$roomCode|";
                                        }elsif ($p110rm05 eq $roomName){
#                                               $resultant[4] = "$roomName|";
#                                               $keys[4]        = "$roomCode|";
                                        }elsif ($p110rm06 eq $roomName){
#                                               $resultant[5] = "$roomName|";
#                                               $keys[5]        = "$roomCode|";
                                        }elsif ($p110rm07 eq $roomName){
#                                               $resultant[6] = "$roomName|";
#                                               $keys[6]        = "$roomCode|";
                                        }elsif ($p110rm08 eq $roomName){
#                                               $resultant[7] = "$roomName|";
#                                               $keys[7]        = "$roomCode|";
                                        }elsif ($p110rm09 eq $roomName){
#                                               $resultant[8] = "$roomName|";
#                                               $keys[8]        = "$roomCode|";
                                        }elsif ($p110rm10 eq $roomName){
#                                               $resultant[9] = "$roomName|";
#                                               $keys[9]        = "$roomCode|";
                                        }else{
                                                print "Problem with $fileName p110 
$roomName ";
                                        }

                        if (scalar(@keys) ne 10){
                                for (1..(10-(scalar @keys)) ){
                                        push @keys, "|";
                                        push @resultant, "|";
                                }

                        }
                }


return  The string of the arrays @resultant and @keys

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to