#!/usr/bin/perl -w # This script reads a Tab-delimited BLAST # output file, skips lines with E-values # greater than 1e-20 and prints other lines, # adding '**' for E-values of zero # Author: MyName # Version 2.01 26 Oct 2003 # added exit(-1) # Version 2.0 18 Aug 2003 # get filename as argument # pattern match to skip comments # Version 1.0 01 Feb 2003 # initial beta version use strict; my ($blastfile, $line, $e_value, @cols); $blastfile = $ARGV[0]; # Verify that an argument was provided if (!defined $blastfile) { print "Missing filename argument\n"; print "Usage: $0 BLAST file\n"; exit(-1); } # Open the BLAST file open(INFILE, "<$blastfile") or die "Cannot open file $blastfile\n"; # Read BLAST results, one line at a time while ($line = ) { # Skip comment lines if ( $line =~ /^#/ ) { next; } @cols = split /\t/, $line; $e_value = $cols[10]; # If e-value begins with 'e', prepend a '1' # so Perl can recognize it as an exponential # number if ( $e_value =~ /^e/ ) { $e_value = "1" . $e_value; } # If e-value is higher than 1e-20, skip if ( $e_value > 1e-20 ) { next; } if ($e_value == 0.0) { print "** $line"; } else { print " $line"; } } # End while close(INFILE);