#!/usr/bin/perl -- use strict; use warnings; use MIME::Parser; ... Main( @ARGV ); exit( 0 ); sub Mainskee { ... my @files = get_files( $fromdir ); for my $file ( @files ){ if( matches_adresses_iwant( $file ) ){ informit( "explode_plaintext_fromfile_into( $file, $outdir )" ); lincon_plaintext_logs( $file, $outdir ); } else { informit( "not matches_adresses_iwant( $file )" ); } } } sub lincon_plaintext_logs { my( $outdir , $file ) = @_; explode_plaintext_fromfile_into( $file, $outdir ); my @links = extract_links( $outdir ); if( @links ){ log_links( @links ); } else { informit( "not extract_links( $file )" ); } } sub get_files { ... } sub matches_adresses_iwant { ... } sub extract_links { ... } sub explode_plaintext_fromfile_into { ... } sub log_links { ... } sub informit { print STDOUT @_,"\n" } __END__