.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
.\" ========================================================================
.de Sh \" Subsection heading
.de Sp \" Vertical space (when we can't use .PP)
.de Vb \" Begin verbatim text
.de Ve \" End verbatim text
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. | will give a
.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
.\" expand to `' in nroff, nothing in troff, for use with C<>.
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
. tm Index:\\$1\t\\n%\t"\\$2"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
. \" fudge factors for nroff and troff
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
. \" simple accents for nroff and troff
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
. \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
. \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
. \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
.\" ========================================================================
.IX Title "Psh::Strategy 3"
.TH Psh::Strategy 3 "2003-01-02" "perl v5.8.0" "User Contributed Perl Documentation"
Psh::Strategy \- a Perl Shell Evaluation Strategy (base class)
Psh::Strategy offers a procedural strategy list interface and a
base class for developing strategies.
.SH "PROCEDURAL STRATEGY LIST"
.IX Header "PROCEDURAL STRATEGY LIST"
Returns a list of active Psh::Strategy objects.
\& my $obj= Psh::Strategy::get('name')
Loads and initializes a certain Psh::Strategy object
\& Psh::Strategy::add($obj [, $suggest_position])
Adds a strategy object to the list of active strategies
\& Psh::Strategy::remove($name)
\& @list= Psh::Strategy::available_list()
Lists available strategies
Finds the position of the named strategy
\& my $flag= active($name)
Returns true if the named strategy is currently active
.SH "DEVELOPING STRATEGIES"
.IX Header "DEVELOPING STRATEGIES"
You have to inherit from Psh::Strategy and you \s-1MUST\s0 at least
override the functions \f(CW\*(C`consumes\*(C'\fR, \f(CW\*(C`applies\*(C'\fR, \f(CW\*(C`execute\*(C'\fR.
You \s-1CAN\s0 also override the function \f(CW\*(C`runs_before\*(C'\fR
Returns either \s-1CONSUME_LINE\s0, \s-1CONSUME_WORDS\s0, \s-1CONSUME_TOKENS\s0.
\&\s-1CONSUME_LINE\s0 means you want to receive the whole input line
unparsed. \s-1CONSUME_WORDS\s0 means you want to receive the whole
input line tokenized (currenty unimplemented). \s-1CONSUME_TOKENS\s0
means that you want to receive a sub-part of the line, tokenized
(this is probably what you want)
Returns undef if the strategy does not want to handle the input.
Returns a human-readable description if it wants to handle the input.
If you specified \s-1CONSUME_LINE\s0, this method will be called as
\f(CW$obj\fR\->applies(\e$inputline);
If you specified \s-1CONSUME_TOKENS\s0, this method will be called as
\f(CW$obj\fR\->applies(\e$inputline,\e@tokens,$piped_flag)
\f(CW$obj\fR\->execute(\e$inputline,\e@tokens,$how,$piped_flag)
\&\f(CW$how\fR is what the call to applies returned. If \f(CW@tokens\fR is
not applicable an empty array will be supplied.
Your execute function should return an array of the form:
\& ($evalcode, \e@words, $forcefork, @return_val)
If \f(CW$evalcode\fR, <@words> and <$forcefork> are undef, execution is finished
after this call and \f(CW@return_val\fR will be used as return value.
But \f(CW$evalcode\fR can also be a Perl sub \- in which case it is evaluated
later on, or a string \- in which case it's a filename of a program to
execute. \f(CW@words\fR will then be used as arguments for the program.
\&\f(CW$forcefork\fR may be used to force a \f(CW\*(C`fork()\*(C'\fR call even for the perl
Returns a list of names of other strategies. It is guaranteed that
the evaluation strategy will be tried before those other named strategies