Tom Wyant
and 1 contributors


Astro::App::Satpass2::Macro::Code - Implement code as macros


No user-serviceable parts inside.


This class is private to the Astro-App-Satpass2 distribution, mostly because the code interface has not been written.


This class provides or overrides the following methods:


 $macro->execute( $name, @argv );

This method executes the named code, which must be findable via $macro->implements( $name ). The code will be passed the parent Astro::App::Satpass2 object as its first argument, and @argv as subsequent arguments. Whatever it returns will be returned to the caller.


This method returns true if the lib attribute was specified when the class was created.


This method treats the name attribute as the name of a module to be loaded (either with or without 'Astro::App::Satpass2::Macro::Code::' prepended). This module must be a subclass of Astro::App::Satpass2. The loaded module's symbol table is examined, and the implements attribute is populated with names of and references to any code that has the Verb attribute.

Note that this means the implements( $name ) method returns a reference to the implementing code if $name is actually implemented; but users of this module should not rely on this behavior.


This class redefines or adds the following attributes of its superclass:


This is the name of a directory to be added to @INC before loading the Perl module that contains the macros. Tilde expansion will be done on the value. The default is lib/ in the user's configuration directory. If the value is undef, nothing is added to @INC before the load.

The value of this attribute can be retrieved by the same-named method, but since this returns undef if this attribute was unspecified as well as if it was explicitly specified as undef, you should use the has_lib() method if the difference is important to your code.


This is the name of the Perl module containing the desired code macros.


If this attribute is true, the value of the -lib option, if any, is left untouched. Otherwise, it is made into an absolute file reference unless it begins with a tilde.

This is really only here to make testing easier.


The superclass, Astro::App::Satpass2::Macro.


Support is by the author. Please file bug reports at, or in electronic mail to the author.


Thomas R. Wyant, III wyant at cpan dot org


Copyright (C) 2013-2018 by Thomas R. Wyant, III

This program is free software; you can redistribute it and/or modify it under the same terms as Perl 5.10.0. For more details, see the full text of the licenses in the directory LICENSES.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.