First of all, Yes, even you can use CPAN, and you can always copy the code from within modules into your program.
Second, are you sure that it works? Because after adding some print statements to your code to monitor its progress it seem to me that it's not doing anything sensible:
#!/usr/bin/perl
use strict;
#open DATA, "</home/file.conf";
my $DESIRED_LINE_NUMBER;
my $LINE;
while (<DATA>)
{
if(m/END/)
{
print "END line is on line >$.\n";
print "END line is >$_\n";
my $pos = $.;
$pos--;
chomp $pos;
$DESIRED_LINE_NUMBER = $pos;
}
}
print "Moving to line number $DESIRED_LINE_NUMBER\n";
$. = 0;
do { $LINE = <DATA>; print "Discarding: $LINE\n" } until $. == $DESIRE
+D_LINE_NUMBER || eof;
print "Found desired line $DESIRED_LINE_NUMBER as '$LINE'\n";
__DATA__
foo
bar
baz
END
bloob
blargh
blubb
blubb2
But then again, if you're confident that it does what you want, most likely you're also able to modify it yourself to do more of what you want.
The modified program outputs:
C:\Projekte>perl -w tmp.pl
>4
>END
Moving to line number 3
Use of uninitialized value $LINE in concatenation (.) or string at tmp
+.pl line 2
6.
Discarding:
Use of uninitialized value $LINE in concatenation (.) or string at tmp
+.pl line 2
7.
Found desired line 3 as ''
... which doesn't look like the line above the END line to me. |