Why can't I add to the middle of an array with Perl's Tie::File?

Posted by SCNCN2010 on Stack Overflow See other posts from Stack Overflow or by SCNCN2010
Published on 2010-06-07T09:07:49Z Indexed on 2010/06/07 16:22 UTC
Read the original article Hit count: 354

Filed under:
|

File :

#comment1
#comment2
#comment3
#START HERE

a:  [email protected]
b:  [email protected]

my perl program :

use Data::Dumper;
use Tie::File;
tie my @array, 'Tie::File', 'ala.txt' or die $!;

my $rec = 'p:                                        [email protected]';

my $flag =1 ;
my $add_flag = 0;
for my $i (0..$#array) {
        next if ($array[$i] =~ /^\s*$/);
        if ( $flag == 1 )  {
                if ($array[$i] =~ /#START HERE/ ) {
                  $flag = 0;
                }
                else {
                  next ;
                }
        }
    if (($array[$i] cmp $rec) == 1) {
           splice @array, $i, 0, $rec;
          $add_flag = 1;
        last ;
    }
}

if ( $add_flag == 0 ) {
   my $index = $#array+1;
   $array[$index] = $rec ;

}

the recording adding end of file always . I am trying to add to middle or begin or end like aplphbetical order

Edit 2 :

I want to do with Tie::FILE only .

after add :

(after 2 execution )

#comment1
#comment2
#comment3
#START HERE

a:  [email protected]
b:  [email protected]
p:                                        [email protected]
a:                                        [email protected] # if i add another record of a 

Expection :

#comment1
#comment2
#comment3
#START HERE

a:  [email protected]
a:  [email protected]
b:  [email protected]
p:                                        [email protected]
q:                                        [email protected]

© Stack Overflow or respective owner

Related posts about perl

Related posts about file