#!/usr/bin/perl
eval "exec /usr/local/bin/perl -S $0 $*"
if $running_under_some_shell;
# this emulates #! processing on NIH machines.
# (remove #! line above if indigestible)
Nu krijg ik:
$* is no longer supported at ./signcontrol line 2.
Het lijkt mij het beste om die twee regels 'eval ... if ...' weg te halen.
Andere suggesties?
Adri
Vista!
Bm
Het is hier gebruikelijk om niet te reageren als je het niet begrijpt,
vooral als je het niet wíl begrijpen, Bm.
A-doei :) Adri
--
Zoals ik zojuist zei, ik verval nooit in herhalingen.
Nee, het is een overblijfsel van het gebruik van a2p (awk2perl) en volgens
mij al minstens 10 jaar obsolete.
--
robert
>het is een overblijfsel van het gebruik van a2p (awk2perl) en volgens
>mij al minstens 10 jaar obsolete.
Dat is ook wat, want tien jaar geleden ben ik overgestapt van SCO UNIX op
Linux. :-) Tot die tijd moest ik me inderdaad "behelpen" met deze eval-
constructie; Perl zat toen niet standaard bij het besturingssysteem, het
moest zélf gecompileerd worden en dan installeerde ik het in /usr/local/bin.
Om het 'signcontrol'-script destijds aan het werk te krijgen, heb ik dus
hoogstwaarschijnlijk wel zelf die 'NIH'-code erin geplaatst. En zo niet,
dan waren er vast toch ook wel andere scripts die het nog nodig hadden.
Adri
NB Voor diegenen die niet weten wat NIH betekent: Not Invented Here.
--
[UUCP] "(_ UNIX-to-_ UNIX _ co_ py -- a program that copies Unix files from one machine
or system to another.) It was designed for use over 300 baud lines. It proved
to be one of the most important parts of Unix, because of its wide use."
"A Quarter Century Of UNIX", Peter H.Salus (Addison-Wesley, ISBN 0-201-54777-5)
Er zijn hier 2 kwesties:
1. waar staat de perl executable. dat moet je aanpassen in het script
en dat staat er met die 2e constructie totaal 2 keer in. de ene staat
op /usr/bin en de andere op /usr/local/bin wat een beetje vreemd is.
2. werkt de #! constructie op het betreffende systeem. als een file begint
met #! en wordt uitgevoerd dan zal de kernel de rest van die #! regel
gebruiken om de juiste 'interpreter' op te starten (perl in dit geval).
maar niet alle (oude) versies van Unix supporten dat mechanisme. dan
wordt de file gewoon met /bin/sh gestart die de eerste regel als een
comment ziet en de tweede uitvoert (de 3e regel ziet ie niet).
wellicht support SCO UNIX ook #! nog niet. in dat geval is die
tweede constructie dus nodig. ik geloof dat die ook onder Windows
nodig is.
Maar uiteraard is die exec hardstikke link want de argumenten kunnen allerlei
speciale tekens bevatten (quotes, < > | etc) die in dit geval voor een
tweede keer geevalueerd worden. Volgens mij kan dat (security) problemen
geven. Dat is vast de reden dat ze het uitgefaseerd hebben.