Prty
view release on metacpan or search on metacpan
lib/Prty/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 Hilfe
=head3 help() - Gib Hilfetext aus und beende Programm
=head4 Synopsis
$self->help;
$self->help($exitCode);
$self->help($exitCode,$msg);
=head4 Description
Der Hilfetext wird aus der POD-Dokumentation des Programms generiert.
=over 2
=item *
Ist $exitCode == 0, wird der Hilfetext auf STDOUT ausgegeben.
Ist $exitCode != 0, wird der Hilfetext auf STDERR ausgegeben.
=item *
Ist $msg angegeben, wird die Hilfeseite oben und unten um Text $msg
ergänzt (jeweils mit Leerzeile abgetrennt).
=item *
Ist $exitCode == 0 und STDOUT mit einem Terminal verbunden, wird
der Hilfetext im Pager dargestellt (Environment-Variable $PAGER
oder less).
=back
=cut
# -----------------------------------------------------------------------------
sub help {
my $self = shift;
my $exitCode = shift || 0;
my $msg = shift || '';
# Encoding des POD-Dokuments ermitteln
my $podEncoding = 'iso-8859-1';
my $fh = Prty::FileHandle->new('<',$0);
while (<$fh>) {
chomp;
if (/^=encoding\s+(\S+)/) {
$podEncoding = $1;
last;
( run in 1.453 second using v1.01-cache-2.11-cpan-71847e10f99 )