Globs und stat

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

tobecompiled.pl
#!/usr/local/bin/perl -w

@tobecompiled = ();
foreach $source (glob("*.c")) {
   ($object = $source) =~ s/\.c$/.o/;
   if (! -f $object || newer($source, $object)) {
      push(@tobecompiled, $source);
   }
}
if (@tobecompiled > 0) {
   print "To be compiled: ", join(" ", @tobecompiled), "\n";
} else {
   print "All objects are up-to-date!\n";
}

sub newer { # return true if file1 is newer than file2
   my ($file1, $file2) = @_;
   return (stat($file1))[9] > (stat($file2))[9];
}

*Dieses Skript stellt (analog zu make) fest, welche C-Quellen frisch zu übersetzen sind aufgrund der vorhandenen Objekte und der Zeitstempel.
 
*glob akzeptiert als Parameter ein Dateimuster der Bourne-Shell und liefert alle gefundenen Dateinamen als Liste zurück.
 
*stat liefert eine 13-elementige Liste mit den Werten aus der entsprechenden Struktur zurück: (0: dev, 1: ino, 2: mode, 3: nlink, 4: uid, 5: gid, 6: rdev, 7: size, 8: atime, 9: mtime, 10: ctime, 11: blksize, 12: blocks).
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996, 1998, 1999, 2000 Andreas Borchert, in HTML konvertiert am 07.02.2000