Вам нужны вызов статистики и имя файла:
my $last_mod_time = (stat ($file))[9];
Perl также имеет другую версию:
my $last_mod_time = -M $file;
, но то значение относительно когда запущенная программа. Это полезно для вещей как сортировка, но Вы, вероятно, хотите первую версию.
Я знаю, что прошло пару месяцев с тех пор, как на этот вопрос был дан ответ, но я искал то же самое и наткнулся на эту страницу. Я не был очень доволен выбранным ответом, поэтому я написал свое собственное решение и решил поделиться им. Вот что я придумал:
# NOTE: The function name starts with an underscore so it doesn't get deleted by iself
def _load_modules(attr_filter=None):
import os
curdir = os.path.dirname(__file__)
imports = [os.path.splitext(fname)[0] for fname in os.listdir(curdir) if fname.endswith(".py")]
pubattrs = {}
for mod_name in imports:
mod = __import__(mod_name, globals(), locals(), ['*'], -1)
for attr in mod.__dict__:
if not attr.startswith('_') and (not attr_filter or attr_filter(mod_name, attr)):
pubattrs[attr] = getattr(mod, attr)
# Restore the global namespace to it's initial state
for var in globals().copy():
if not var.startswith('_'):
del globals()[var]
# Update the global namespace with the specific items we want
globals().update(pubattrs)
# EXAMPLE: Only load classes that end with "Resource"
_load_modules(attr_filter=lambda mod, attr: True if attr.endswith("Resource") else False)
del _load_modules # Keep the namespace clean
Это просто импортирует * из всех файлов .py в каталоге пакета, а затем только перетягивает общедоступные в глобальное пространство имен. Кроме того, он позволяет фильтровать, если желательны только определенные общедоступные атрибуты.
from subdir.* import *
Вы не можете использовать «*» таким образом непосредственно после оператора «от». Вам нужно эксплицировать импорт. Пожалуйста, сверьтесь с документацией Python об импорте и пакетах.