Оператор подстановки Perl выглядит следующим образом:
s/PATTERN/STRING/
Но это также один из тех операторов Perl, которые позволяют вам выбирать свои собственные разделители.Итак, еще один способ написать это:
s|PATTERN|STRING|
И это версия, которую вы видите здесь.Ваш шаблон .*/
, а строка замены пуста.Таким образом, ваша подстановка означает «найти как можно больше (не начинающихся) символов, за которыми следует косая черта, и заменить их ничем».Глядя на это вместе с присваиванием в строке над ним (в котором используется $0
- путь к программе), похоже, что у нас есть код, который удаляет каталоги с начала пути и просто оставляет имя файла.
То есть, если вы начнете с имени программы /usr/local/bin/my_program
, то $p
в итоге будет содержать только my_program
.
Лучший способ написать это в Perl - использовать File :: Basename модуль.Я был бы удивлен, если бы у Python не было чего-то подобного.
use File::Basename;
my $p = basename($0);