#!/usr/bin/env perl # Core Modules use strict; use warnings; use utf8; use open ':encoding(UTF-8)'; use open ':std'; use Getopt::Long; my $input; my $output = \*STDOUT; # Accepts -i and -o GetOptions( 'input=s' => \$input, 'output=s' => \$output, ) or die "Argument Parsing Error\n"; # Open input file open my $fh_in, '<', $input or die "Cannot open input file: $!\n"; # $fh is file or STDOUT my $fh_out; if ( ref($output) eq 'GLOB' ) { $fh_out = $output; } else { open $fh_out, '>', $output or die "Cannot open output file: $!\n"; } # read file while ( my $line = <$fh_in> ) { chomp($line); if ( length($line) > 10 && length($line) < 15 ) { print {$fh_out} $line, "\n" or die "Cannot write to output: $!\n"; } } close $fh_in or die "Cannot close input file: $!\n"; close $fh_out or die "Cannot close output file: $!\n";