Предположим, у меня есть путь в строке с именем '/home/user/directory/HelloWorld.txt'. Я хотел бы удалить HelloWorld.txt и в конечном итоге получить «/ home / user / directory». Какое бы регулярное выражение мне понадобилось.
Не используйте регулярные выражения. Вместо этого используйте File::Basename, который может обрабатывать все особые случаи.
File::Basename
use File::Basename; dirname("/foo/bar/baz/quux.txt"); --> "/foo/bar/baz"
разделить на "/", удалить последний элемент и соединить их обратно.
$path='/home/user/directory/HelloWorld.txt'; @s = split /\// ,$path; pop(@s); print join("/",@s);