open ( SCRIPT, "| /usr/local/bin/my_program" ) or die $!; foreach ( ) { if ( /\.gz$/ ) { open ( FILE, "/usr/bin/zcat $_ |" ) or die $!; } else { open ( FILE, "< $_" ) or die $!; } while ( ) { print SCRIPT; } close( FILE ); } close( SCRIPT );