TAP::Parser::Source − a TAP source & meta data about it


Version 3.23


  use TAP::Parser::Source;
  my $source = TAP::Parser::Source−>new;
  $source−>raw( \'reference to raw TAP source' )
         −>config( \%config )
         −>merge( $boolean )
         −>switches( \@switches )
         −>test_args( \@args )
  do { ... } if $source−>meta−>{is_file};
  # see assemble_meta for a full list of data available


A TAP source is something that produces a stream of TAP for the parser to consume, such as an executable file, a text file, an archive, an IO handle, a database, etc. "TAP::Parser::Source"s encapsulate these raw sources, and provide some useful meta data about them. They are used by TAP::Parser::SourceHandlers, which do whatever is required to produce & capture a stream of TAP from the raw source, and package it up in a TAP::Parser::Iterator for the parser to consume.

Unless you’re writing a new TAP::Parser::SourceHandler, a plugin or subclassing TAP::Parser, you probably won’t need to use this module directly.


Class Methods

 my $source = TAP::Parser::Source−>new;

Returns a new "TAP::Parser::Source" object.

Instance Methods

  my $raw = $source−>raw;
  $source−>raw( $some_value );

Chaining getter/setter for the raw TAP source. This is a reference, as it may contain large amounts of data (eg: raw TAP ).


  my $meta = $source−>meta;
  $source−>meta({ %some_value });

Chaining getter/setter for meta data about the source. This defaults to an empty hashref. See "assemble_meta" for more info.


True if the source has meta data.


  my $config = $source−>config;
  $source−>config({ %some_value });

Chaining getter/setter for the source’s configuration, if any has been provided by the user. How it’s used is up to you. This defaults to an empty hashref. See "config_for" for more info.


  my $merge = $source−>merge;
  $source−>config( $bool );

Chaining getter/setter for the flag that dictates whether STDOUT and STDERR should be merged (where appropriate). Defaults to undef.


  my $switches = $source−>switches;
  $source−>config([ @switches ]);

Chaining getter/setter for the list of command-line switches that should be passed to the source (where appropriate). Defaults to undef.


  my $test_args = $source−>test_args;
  $source−>config([ @test_args ]);

Chaining getter/setter for the list of command-line arguments that should be passed to the source (where appropriate). Defaults to undef.


  my $meta = $source−>assemble_meta;

Gathers meta data about the "raw" source, stashes it in "meta" and returns it as a hashref. This is done so that the TAP::Parser::SourceHandlers don’t have to repeat common checks. Currently this includes:

    is_scalar => $bool,
    is_hash   => $bool,
    is_array  => $bool,
    # for scalars:
    length => $n
    has_newlines => $bool
    # only done if the scalar looks like a filename
    is_file => $bool,
    is_dir  => $bool,
    is_symlink => $bool,
    file => {
        # only done if the scalar looks like a filename
        basename => $string, # including ext
        dir      => $string,
        ext      => $string,
        lc_ext   => $string,
        # system checks
        exists  => $bool,
        stat    => [ ... ], # perldoc −f stat
        empty   => $bool,
        size    => $n,
        text    => $bool,
        binary  => $bool,
        read    => $bool,
        write   => $bool,
        execute => $bool,
        setuid  => $bool,
        setgid  => $bool,
        sticky  => $bool,
        is_file => $bool,
        is_dir  => $bool,
        is_symlink => $bool,
        # only done if the file's a symlink
        lstat      => [ ... ], # perldoc −f lstat
        # only done if the file's a readable text file
        shebang => $first_line,
  # for arrays:
  size => $n,


Get the shebang line for a script file.

  my $shebang = TAP::Parser::Source−>shebang( $some_script );

May be called as a class method


  my $config = $source−>config_for( $class );

Returns "config" for the $class given. Class names may be fully qualified or abbreviated, eg:

  # these are equivalent
  $source−>config_for( 'Perl' );
  $source−>config_for( 'TAP::Parser::SourceHandler::Perl' );

If a fully qualified $class is given, its abbreviated version is checked first.


Steve Purkis.


TAP::Object, TAP::Parser, TAP::Parser::IteratorFactory, TAP::Parser::SourceHandler

More Linux Commands

rc.news(8) - Start or stop INN daemons - Linux manual page
rc.news can be used to start or stop innd and supporting programs. It checks to make sure INN is not already running, handles cases of unclean shutdown, finishe

permissions(5) - default permission settings (Man Page).....
- The files /etc/permissions.* are line based and space delimited. - Lines starting with # are comments. - The first column specifies the file name. Directory n

smi_event(3) - SMI identity information routines (Man Page)
These functions retrieve information on a SMIng event definition (SMIng). smiGetEvent(SmiClass *smiClassPtr, char *name) returns a pointer to struct SmiEvent fo

301 Moved Permanently - open government

dgettext(3) - translate message (Library - Linux man page)
The gettext, dgettext and dcgettext functions attempt to translate a text string into the users native language, by looking up the translation in a message cata

users(1) - print the user names of users currently logged in
Output who is currently logged in according to FILE. If FILE is not specified, use /var/run/utmp. /var/log/wtmp as FILE is common. --help display this help and

vttest(1) - test VT100-type terminal - Linux manual page....
Vttest is a program designed to test the functionality of a VT100 terminal (or emulator thereof). It tests both display (escape sequence handling) and keyboard.

domain(8) - nnrpd domain resolver - Linux manual page.......
This program can be used in readers.conf to grant access based on the subdomain part of the remote hostname. In particular, it only returns success if the remot

firefox(1) - a Web browser for X11 derived from the Mozilla
Mozilla Firefox is an open-source web browser, designed for standards compliance, performance and portability. USAGE firefox is a simple shell script that will

xdr_reference(3) - library routines for external data repres
These routines allow C programmers to describe arbitrary data structures in a machine-independent fashion. Data for remote procedure calls are transmitted using

ripit(1) Perl script to create flac, ogg, mp3, m4a (aac), al
This Perl script makes it a lot easier to create compressed sound files from an audio CD. RipIT supports Flac, Lame, Oggenc, Faac, mp4als, Musepack, Wavpack ...

mouseinterval(3ncurses) - mouse interface through curses....
These functions provide an interface to mouse events from ncurses(3NCURSES). Mouse events are represented by KEY_MOUSE pseudo-key values in the wgetch input str

We can't live, work or learn in freedom unless the software we use is free.