- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
# Relocate
if (open(my $reloc, "support/reloc.txt")) {
# ...
print "Relocating...";
my $count = 0;
local $_;
while (<$reloc>) {
chomp;
my($type, $f) = split(' ', $_, 2);
$f = "$prefix/$f";
$f =~ s,/,\\,g;
#print "Relocating $f...\n";
my $read_only;
unless (-w $f) {
$read_only++;
run("\@attrib", "-r", $f);
}
open(my $fh, "+<", $f) || die "Can't open $f: $!";
binmode($fh);
my $content = do { local $/; <$fh> };
if ($type eq "B") {
$content =~ s,\Q$sponge\E([^\0]*),$prefix$1$binary_pad,go;
}
else {
$content =~ s,\Q$sponge\E,$prefix,go;
$content =~ s,\Q$sponge_str\E,$prefix_str,go if $^O eq "MSWin32";
truncate($fh, length($content)) || die "Can't truncate '$f': $!";
}
seek($fh, 0, 0) || die "Can't reset file pos on '$f': $!";
print $fh $content;
close($fh) || die "Can't write back content to '$f': $!";
run("\@attrib", "+r", $f) if $read_only;
$count++;
}
print "done ($count files relocated)\n";
}
установщик перл...
reloc.txt содержит 137 файлов.
seonull 01.11.2010 13:18 # 0
#line 15
eval 'exec C:\TEMP\perl---please-run-the-install-script---\bin\perl.exe -S $0 ${1+"$@"}'
Dummy00001 01.11.2010 13:46 # +4
а так вообще нормальный скрипт. даже не вижу к чему придратся. безопастный 3-param open() - используется. ошибки обрабатываются. совместимость с Win32 сделана. и даже диагностические сообщения выводятся.
seonull 01.11.2010 14:03 # 0
Dummy00001 01.11.2010 14:45 # 0
с другой стороны. в случае простых скриптов намного проще и полезнее задавать параметры прямо в самом скрипте, например в самом начале скрипта. бо даже и обычному пользователю задавать два десятка параметров на коммандной строке не очень удобно - и часто просто убивает все преимущества автоматизации предоставляемой скриптом. (тем более на виндах где история и редактирование коммандной строки настолько примитивны. я как то раз пробовал dcraw'ом с коммандной строки в виндах пользоватся... )
seonull 01.11.2010 20:53 # +1
Dummy00001 01.11.2010 22:20 # 0
юзер похоже в корпоративной сети/домене сидит и не может с его правами инсталяцию до конца довести (у меня в офисе та же песня). перл будет работать - но вот такие кучки ГК остаются неубраными.
seonull 02.11.2010 08:12 # 0
Dummy00001 02.11.2010 13:02 # 0
простой артефакт того как народ ванила перл на винды портировал. и строчка есть нетривиальный хак для того что бы перловие скрипты под виндами могли также быть переименованы в .bat - потому что .bat'ы винды лучше поддерживают и систему сильно патчить не надо для их поддержки.
seonull 03.11.2010 08:37 # 0