Это хороший способ извлечь имя скрипта?

Programaría el trabajo cron para que se ejecutara todos los días. Entonces el script puede decidir si el día -del año -es un número par :si no, salir.

import datetime
today = datetime.date.today()
doy = int(today.strftime("%j"))
if (doy % 2 == 1): exit()
... 
1
05.07.2019, 17:44
1 ответ

Вы можете быть уверены, что имя файла никогда не будет иметь /. Поэтому достаточно сделать:

$0=~/([^\/]+)$/;
my $this = $1;
print "my name is $this\n";

Все остальное (, кроме \0), является честной игрой в имени файла. Таким образом, ваш подход пропустил бы такое сумасшедшее имя файла:

th&is%sc(ip)tHas
      a^really#weird"+Name=!

И да, вы можете создать файл с таким именем:

$ touch 'th&is%sc(ip)tHas'$'\n'$'\t''a^really#weird"+Name=!'
$ ls -l *Nam*
-rw-r--r-- 1 terdon terdon 0 Jul  5 16:00 'th&is%sc(ip)tHas'$'\n\t''a^really#weird"+Name=!'

Но Perl может с этим справиться. Я сохранил строки выше с этим ужасным именем и запустил:

$ perl *Nam*
my name is th&is%sc(ip)tHas
    a^really#weird"+Name=!

Ваша первоначальная версия потерпела бы неудачу с:

$ perl *Nam*
Use of uninitialized value $this in concatenation (.) or string at th&is%sc(ip)tHas
    a^really#weird"+Name=! line 7.
my name is 

Это потому, что[\w\.\-\_]1 не соответствует ни одному из символов(&%()^#"+=!)или пробелу в имени.


1Между прочим, вам не нужно убегать от большинства из них. Просто используйте [\w.\-_].

2
27.01.2020, 23:30

Теги

Похожие вопросы