I want to move to a line some(say 3) lines back
Fellow Monk,
Consider the following:
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;
}
A couple of caveats here: first off make sure you
understand for instance that if you want to move
line 10 to line 6 in file "foo.txt" you'd
invoke the above sub as
moveLineInFile('foo.txt',9,5).
There are no doubt more efficient ways of doing this but
I chose to show you this way so you can see the
concept of what is going on here more transparently.
Sorta like "The Visible Man" models of my
youth. Don't know if those are still around or even
if that's a culture centric reference.
My last comment is to echo what other monks have told
you in this thread. It is customary here at the Monastery
to follow up on a question you asked by posting a reply
to your own post rather than starting a new thread.
Also, something that I preach to students and
co-workers of mine a very important concept: Problem Definition
When you ask a question here at Perl Monks (or any other
forum for that matter) make sure you have the entire
problem well defined before asking. This way folks can
understand what it is you are trying to do and can give
you the solution you need rather than unecessary detours
along the way.
Sorta reminds me of a story that has been bandied about
for a while about the fellow who calls a help desk to
say that his computer doesn't work. The punch line to
the story (won't tell the whole thing here) is that
there was a blackout and that's why the computer didn't
work!
Peter L. Berghold -- Unix Professional
Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg
|