Thread : bad interpreter (12 answers)
Opened by vayu at 2007-04-18 14:09

vayu
 2007-04-18 14:09
#76005 #76005
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
hi,

ich blicks grad nicht ...

ich hab das skript mit chmod 755 script.pl, ausführbar gemacht und möchte es ohne das "perl" vornweg aufrufen unter Linux

der Pfad zum Perl in der shebang stimmt 100%

und ich krieg die Fehlermeldung

: bad interpreter: Datei oder Verzeichnis nicht gefunden

das komische ist, dass vor dem ersten ":" gar nichts steht. da sollte doch dann wenigstens pl oder sowas kommen?

und noch komischer ist, dass ein anderes skript von mir einwandfrei so läuft, gleiche shebang, gleiche Modul includes. nur dieses skript funktioniert so nicht.

Woran liegt es?

Code: (dl )
1
2
3
4
5
6
7
8
9
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
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;
use Getopt::Std;

my %opts = ();
getopts('d:rh', \%opts);
print usage() if(!defined $opts{'d'} or $opts{'h'});
my @du = qx(du -h --max-depth=1 $opts{'d'});
my %d = ();

foreach(@du) {
chomp;
if(/(\d+)K(.*)$/) { $_ = ($1 *1024)." ".$2; }
if(/(\d+)M(.*)$/) { $_ = ($1 *1024*1024)." ".$2; }
if(/(\d+)G(.*)$/) { $_ = ($1*1024*1024*1024)." ".$2; }
if(/(\d+) (.*)$/) { push @{$d{$1}}, $2; }
}
@du = ();
foreach (sort {$a <=> $b} keys %d) {
my $key = $_;

if ($_ > 1073741824) { $key = ($key / 1073741824)."G"; }
elsif($_ > 1048576) { $key = ($key / 1048576) ."M"; }
elsif($_ > 1024) { $key = ($key / 1024) ."K"; }
foreach my $ele (@{$d{$_}}) {
push @du, $key."\t".$ele;
}
}

if($opts{'r'}) {
print $_."\n" foreach(reverse @du);
} else {
print $_."\n" foreach(@du);
}

sub usage {
print<<EOF;
du.pl -d <directory> [-r]

Arguments:

mandatory:
-d directory name

optional:
-r if the sort order should be descending
EOF

exit 0;
}

View full thread : bad interpreter