use Tie::File; | | sub moveLineInFile { my ($fname,$lineFrom,$lineTo)=@_; my @ry=(); tie @ry,'Tie::File',"fname" or die "$fname: $!"; my $temp = $ry[$lineFrom]; for ( my $ix=$lineFrom;$ix>$lineTo;$ix++){ $ry[$ix]=$ry[$ix-1]; } $ry[$lineFrom]=$temp; untie @ry; }