NAME
Prty::CommandLine - Konstruiere eine Unix-Kommandozeile
BASE CLASS
SYNOPSIS
use Prty::CommandLine;
my $c = Prty::CommandLine->new('iconv');
$c->addOption(
-f => 'utf-8',
-t => 'latin1',
);
$c->addString('|','enscript');
$c->addBoolOption(
'--no-header' => 1,
'--landscape' => 1,
);
$c->addOption(
'--font' => 'Courier8',
);
$c->addString('2>/dev/null','|','ps2pdf','-');
$c->addArgument('/tmp/test.pdf');
my $cmd = $c->command;
__END__
iconv -f utf-8 -t latin1 | enscript --no-header --landscape
--font=Courier8 2>/dev/null | ps2pdf - /tmp/test.pdf
DESCRIPTION
Die Klasse stellt Methoden zur Verfügung, um eine Unix-Kommandozeile zu konstruieren. Die Klasse ist vor allem hilfreich, wenn die einzelnen Bestandteile der Kommandozeile nicht statisch sind, sondern variieren können.
METHODS
Konstruktor
new() - Konstruktor
Synopsis
$c = $class->new(@opt);
$c = $class->new($str,@opt);
Arguments
Options
- -valSep => $char (Default: '=')
-
Definiert das Trennzeichen bei langen Optionen - also mit zwei Bindestrichen - das die Option vom Wert trenn. Anstelle des Defaults ('=') ist manchmal nur ein Leerzeichen (' ') erlaubt.
Returns
Kommandozeilen-Objekt
Description
Instantiiere ein Kommandozeilen-Objekt und liefere eine Referenz auf dieses Objekt zurück. Mit $str kann der Anfang der Kommandozeile festgelegt werden.
Example
Erzeuge eine Kommandozeile für das Kommando enscript
:
$c = Prty::CommandLine->new('enscript');
Kommandozeilenbestandteile hinzufügen
addArgument() - Ergänze Argumente
Synopsis
$cmd->addArgument(@args);
Arguments
Returns
nichts
Description
Ergänze die Kommandozeile um 0, 1 oder mehr Argumente. Leerzeichen werden vor jedem Argument hinzugefügt. Enthält ein Argument Leerzeichen oder Shell-Metazeichen, wird es Quotes eingefasst. Ist ein Argument leer (undef oder ''), wird ein Leerstring zur Kommandozeile hinzugefügt.
Example
$c->addArgument("/tmp/preview-$$.pdf",'',"Dies ist ein Test");
ergänzt die Kommandozeile um die drei Argumente
... /tmp/preview-4711.pdf '' 'Dies ist ein Test'
addBoolOption() - Ergänze boolsche Optionen
Synopsis
$cmd->addBoolOption(@boolOptions);
Arguments
- @boolOptions
-
Liste von boolschen Optionen, bestehend jeweils aus der Option und zugehörigem Prädikat.
Returns
nichts
Description
Ergänze die Kommandozeile um 0, 1 oder mehr boolsche Optionen. Eine boolsche Option ist eine Option, die keinen Wert hat, sondern vorhanden ist oder nicht, was durch das zugeörige Prädikat bestimmt wird (siehe Beispiel).
Example
$c->addBoolOption(
'--no-header' => 1,
'--landscape' => 0,
'--truncate-lines' => 1,
);
ergänzt die Kommandozeile um die Optionen --no-header
und --truncate-lines
, aber nicht um die Option --landscape
... --no-header --truncate-lines
addOption() - Ergänze Option und ihre Werte
Synopsis
$cmd->addOption(@optVal);
Arguments
Returns
nichts
Description
Ergänze die Kommandozeile um 0, 1 oder mehr Optionen mit zugehörigem Wert.
Example
$c->addOption(
'--columns' => 2,
'--font' => 'Courier10',
'--margins' => '0:0:0:0',
);
ergänzt die Kommandozeile um die Optionen
... --columns=2 --font=Courier10 --margins=0:0:0:0
addString() - Ergänze Zeichenketten
Synopsis
$cmd->addString(@strings);
Arguments
Returns
nichts
Description
Ergänze die Kommandozeile um 0, 1 oder mehr Zeichenketten. Diese werden, mit Whitespace getrennt, unverändert zur Kommandozeile hinzugefügt.
Example
$c->addString('2>/dev/null','|','ps2pdf','-','-');
ergänzt die Kommandozeile um
... 2>/dev/null | ps2pdf - -
Kommandozeile
command() - Liefere Kommandozeile
Synopsis
$cmd = $c->command;
Returns
Kommandozeile (String)
Description
Liefere die Kommandozeile als Zeichenkette, wie sie z.B. von der Shell ausgeführt werden kann.
Hilfsmethoden
value() - Liefere Options- oder Argumentwert
Synopsis
$str2 = $this->value($str1);
Arguments
Returns
Shellverträglichen Wert (String)
Description
Analysiere Zeichenkette $str1 auf Whitespace und Shell-Metazeichen hin und liefere einen Wert, der gefahrlos als Optionswert oder Programmargument zur Kommandozeile hinzugefügt werden kann.
Examples
Undef:
$c->value(undef);
=>
undef
Leerstring:
$c->value("");
=>
''
Zeichenkette ohne Whitespace oder Shell-Metazeichen:
$c->value("/tmp/test.pdf");
=>
/tmp/test.pdf
Zeichenkette mit Whitespace:
$c->value("Dies ist ein Test");
=>
'Dies ist ein Test'
VERSION
1.122
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2018 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.