Я хотел бы, чтобы мои сценарии отслеживали их последнюю дату пересмотра внутри как комментарий. Это возможно? Мне кажется, что нужно было бы захватить дату, а затем открыть свой файл сценария для добавления, записать данные и сохранить файл.
Спасибо Everone, отличные ответы всех без исключения. Основываясь на фрагменте кода, оставленном GreenMatt, я скомбинировал это ...
#!/usr/bin/perl -w
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime time;
$year += 1900;
$mon +=1;
open SELF, ">> letterhome.pl" or die "Unable to open self";
#print SELF "# ran/modified at " . join(' ', localtime(time)) . "\n";
print SELF "# ran/modified at $hour:$min:$sec on $mon/$mday/$year.\n";
close(SELF);
# ran/modified at 31 48 23 24 7 110 2 235 1
# unformated result of using localtime(time)
#Results using formated time/date
# ran/modified at 0:1:43 on 8/25/2010.
# ran/modified at 0:2:40 on 8/25/2010.
# ran/modified at 0:4:35 on 8/25/2010.
Это возможно, но это плохая идея. Во-первых, он не будет обновлять дату, пока вы не запустите его.
Если вы используете хороший редактор, он может иметь способ автоматически вставлять метку времени при сохранении файла. Например, я настроил Emacs для этого в файлах HTML с помощью write-contents-hooks
. (Для работы с кодом Perl потребуются некоторые изменения, но cjm-html-timestamp
в cjm-misc.el даст вам отправную точку.)
Вы можете настроить систему контроля версий на автоматическую настройку.
Но если вы используете систему управления версиями, то этот шаг в первую очередь не является небезопасным.
Следующее работало в системе FreeBSD. Он добавляется в конец, что звучит приемлемо для вас, но не соответствует «нормальному» способу документирования изменений в файле — по крайней мере, для меня, поскольку я почти всегда видел, как это делается в начале. Возможно, вы захотите изменить способ отображения даты/времени.
#!/usr/bin/perl -w
open SELF, ">> selfModify.pl" or die "Unable to open self";
print SELF "# ran/modified at " . join(' ', localtime()) . "\n";
close(SELF);
Разумно это или нет, решать вам.
Похоже, вы уже знаете, как это сделать. Если это perl-скрипт для Unix/Linux, то разрешения не должны быть проблемой, если это для Windows, он может не позволить вам, так как файл используется
-- John
#! /usr/bin/env perl
use warnings;
use strict;
use autodie;
{
open my $self, '>>', $0;
my $time = localtime;
print {$self} "# ran on $time\n";
}
__END__
# ran on Wed Aug 25 16:41:05 2010
По просьбе добавлю мой комментарий в качестве ответа.
Похоже, вы уже знаете, как это сделать. Если это perl-скрипт для Unix/Linux, то разрешения не должны быть проблемой, если это для Windows, он может не позволить вам, так как файл используется.