Quiq
view release on metacpan or search on metacpan
lib/Quiq/Program.pm view on Meta::CPAN
# @_: $key -or- @keys -or- ()
my $optH = $self->{'optH'};
if (!@_) {
return $optH;
}
return $optH->get(@_);
}
# -----------------------------------------------------------------------------
=head2 Verzeichnisse
=head3 projectDir() - Projektverzeichnis
=head4 Synopsis
$dir = $prg->projectDir($depth);
=head4 Description
Liefere den Verzeichnispfad, der $depth Stufen oberhalb des
Verzeichnisses endet, in dem das Programm installiert ist.
Der Installationspfad wird anhand von $0 ermittelt. Wurde das
Programm mit einem relativen Pfad aufgerufen, wird dieser zu einem
absoluten Pfad komplettiert.
=head4 Example
Wurde das Programm myprog unter dem Pfad
/opt/myapp/bin/myprog
installiert, dann liefert $prg->projectDir(1) den Pfad
/opt/myapp
als Projektverzeichnis.
=cut
# -----------------------------------------------------------------------------
sub projectDir {
my ($self,$depth) = @_;
my $path = $0;
if ($path !~ m|^/|) {
# Einen relativen Pfad machen wir zu einem absoluten
# Pfad, indem wir ihn um das aktuelle Verzeichnis ergänzen.
$path =~ s|^./||;
$path = sprintf '%s/%s',$self->cwd,$path;
}
# InstallDir bestimmen, indem wir das Programm und $depth
# Verzeichnisse darüber vom Pfad entfernen
my @path = split m|/|,$path;
splice @path,-($depth+1);
my $dir = join '/',@path;
return $dir;
}
# -----------------------------------------------------------------------------
=head2 Zeit
=head3 elapsed() - Vergangene Zeit in Sekunden
=head4 Synopsis
$sec = $prg->elapsed;
=head4 Returns
Sekunden (Float)
=head4 Description
Ermittele die vergangene Zeit in Sekunden und liefere diese zurück.
=cut
# -----------------------------------------------------------------------------
sub elapsed {
my $self = shift;
return Time::HiRes::gettimeofday-$self->{'t0'};
}
# -----------------------------------------------------------------------------
=head2 Logging
=head3 log() - Schreibe Meldung nach STDERR
=head4 Synopsis
$prg->log($fmt,@args);
$prg->log($level,$fmt,@args);
=head4 Description
Schreibe eine Logmeldung nach STDERR, wenn $level gröÃer oder gleich
dem eingestellten Loglevel ($prg->logLevel) ist. Ist $level nicht
angegeben, wird 1 angenommen.
Die Logmeldung wird per
printf STDERR $fmt,@args;
erzeugt. Endet $fmt nicht mit einem Newline, wird es hinzugefügt.
Per Default ist der LogLevel 0. Er wird mit
$prg->logLevel($n); # $n > 0
( run in 0.456 second using v1.01-cache-2.11-cpan-71847e10f99 )