in reply to file extensions

You don't need to run through an array (or hash) here. You're only matching once per script run, and an index call will work much more efficiently:
use strict; use warnings; my $url = "http://somes.erver/some/file.avi"; my ($ext) = $url =~ /\.(\w+)$/; my $quicktime_ext = '.sdp .rtsp .rts .mov .qt .smi .sml .smil .avi .vfw ' . '.flc.fli .wav .bwf .aiff .aif .aifc .cdda .au .snd ' . '.ulw .mid .midi .smf .kar .qcp .sd2 .amr .gsm .mpeg ' . '.meg .m2s .m1v .ma1 .m75 .m15 .mpm .mpv .mpa .3gp ' . '.3gpp .3g2 .3gp2 .mp4 .mpg4 .m4a .m4p .m4b .m4v ' . '.sdv .amc .swa .m3u .m3url .swf .fpx .fpix .dv .dif '; print 'Valid ext' if $ext && index($quicktime_ext, ".$ext ") != -1;