#!/usr/bin/perl use File::Basename; use strict; my @files = ( 'http://server.com/subdir/index.html', 'http://server.com/subdir/dist.tar.gz', 'http://server.com/whatever.cgi?testing=1', 'ftp://server.com/pub/whatever.zip', 'file://local/subdir/testing.txt', ); foreach my $file ( @files ){ my $suffix = ( fileparse( $file, '\..*$' ) )[2]; $suffix =~ s/(\.?[^.?]*)?\?.*?$/$1/; print $suffix, "\n"; } #### my @valid_extensions = qw/ .tar.gz .html .zip /; foreach my $file ( @files ){ my $suffix = ( fileparse( $file, @valid_extensions ) )[2]; print $suffix, "\n"; }