in reply to print and extract the line

Looking at the comment inside the code, all you want is a one-liner ...

$ perl -wne'5 .. 10 and print' file

Or in your script, more verbose

#!/usr/bin/perl use strict; use warnings; use autodie; sub usage { my $err = shift and select STDERR; print "usage: extract.pl firstline lastline filename\n"; exit $err; } # usage use Getopt::Long qw(:config bundling nopermute); GetOptions ( "help|?" => sub { usage (0); }, ) or usage (1); my ($start, $stop, $file) = @ARGV; -s $file && $start =~ m/^[0-9]+$/ && $stop =~ m/^[0-9]+$/ && $start <= + $stop or usage (1); open my $fh, "<", $file; while (<$fh>) { $. >= $start && $. <= $stop and print "$.: $_"; } close $fh;

Doing this on that code:

$ perl extract.pl 5 8 extract.pl 5: use autodie; 6: 7: sub usage 8: { $

Yeah, way to complex

$ perl -wne'5..8 and print' extract.pl use autodie; sub usage { $

Enjoy, Have FUN! H.Merijn

Replies are listed 'Best First'.
Re^2: print and extract the line
by vis1982 (Acolyte) on Jul 07, 2010 at 14:48 UTC
    Sorry It does not seem the output that i want it is like i have posted the wrong question with different meaning

    As I want is

    have a file A in one line

    ASDSSDSDDDAAAAEDCDALSOSSKDQWSDSD

    i want to extract where say from 4 to 8

    and the output print is

    SSDSD
      To extract a subset of characters from a string, use substr(). See substr.

      #!usr/bin/perl -w use strict; my $x = 'ASDSSDSDDDAAAAEDCDALSOSSKDQWSDSD'; print substr($x,4-1,8-4+1); #strings start at index 0 and not index 1. #prints SSDSD