my ($dir) = m{/([^/]+)/[^/]*$}; #### my ($dir) = m{ / # Preceeded by a slash. ([^/]+) # Preceeded by non-slashes, the dir. Captured. / # Preceeded by a slash. [^/]* # Preceeded by non-slashes, the file name. $ # End of string. }x;