#!/usr/bin/perl use strict; use warnings; $/ = undef; # slurp-mode for input, just in case while ( <> ) { # reads stdin or all file names in ARGV s/\s+//g; # remove whitespace my $content = $_; # keep a working copy tr/ACGTacgt//d; # remove all acgt if ( length() ) { # anything left? print "$ARGV bad content: $_\n"; do_something_with_bad_data( $ARGV, $content ); } else { print "$ARGV all clean!\n"; do_something_with_good_data( $ARGV, $content ); } } sub do_something_with_bad_data { my ( $filename, $data ) = @_; # . . . fix it? report it to someone? } sub do_something_with_good_data { my ( $filename, $data ) = @_; # . . . whatever you want to do }