---
name: "TAP::Parser::Source::Perl"
section: "3pm"
platform: "linux"
package: "libtest-harness-perl"
version: "3.12-1"
release: "Debian 5.0 (Lenny)"
platforms: ["linux"]
url: "https://new.carta.tech/TAP::Parser::Source::Perl/3pm"
---

# TAP::Parser::Source::Perl(3pm)

TAP::Parser::Source::Perl - Stream Perl output Version 3.12

```
  use TAP::Parser::Source::Perl;
  my $perl = TAP::Parser::Source::Perl->new({ parser => $parser });
  my $stream = $perl->source( [ $filename, @args ] )->get_stream;
```

Takes a filename and hopefully returns a stream from it.  The filename should be the name of a Perl program. Note that this is a subclass of TAP::Parser::Source.  See that module for more methods.\
 **Class Methods** *"new"*

```
 my $perl = TAP::Parser::Source::Perl->new({ parser => $parser });
```

Returns a new `"TAP::Parser::Source::Perl"` object.\
 **Instance Methods** *"source"* Getter/setter the name of the test program and any arguments it requires.

```
  my ($filename, @args) = @{ $perl->source };
  $perl->source( [ $filename, @args ] );
```

`"croak"`s if `$filename` could not be found. *"switches"*

```
  my $switches = $perl->switches;
  my @switches = $perl->switches;
  $perl->switches( \@switches );
```

Getter/setter for the additional switches to pass to the perl executable.  One common switch would be to set an include directory:

```
  $perl->switches( ['-Ilib'] );
```

*"get\_stream"*

```
  my $stream = $source->get_stream;
```

Returns a stream of the output generated by executing `"source"`. *"shebang"* Get the shebang line for a script file.

```
  my $shebang = TAP::Parser::Source::Perl->shebang( $some_script );
```

May be called as a class method *"get\_taint"* Decode any taint switches from a Perl shebang line.

```
  # $taint will be 't'
  my $taint = TAP::Parser::Source::Perl->get_taint( '#!/usr/bin/perl -t' );
  # $untaint will be undefined
  my $untaint = TAP::Parser::Source::Perl->get_taint( '#!/usr/bin/perl' );
```

Please see "SUBCLASSING" in TAP::Parser for a subclassing overview.\
 **Example**

```
  package MyPerlSource;
  use strict;
  use vars '@ISA';
  use Carp qw( croak );
  use TAP::Parser::Source::Perl;
  @ISA = qw( TAP::Parser::Source::Perl );
  sub source {
      my ($self, $args) = @_;
      if ($args) {
          $self->{file} = $args->[0];
          return $self->SUPER::source($args);
      }
      return $self->SUPER::source;
  }
  # use the version of perl from the shebang line in the test file
  sub _get_perl {
      my $self = shift;
      if (my $shebang = $self->shebang( $self->{file} )) {
          $shebang =~ /^#!(.*\bperl.*?)(?:(?:\s)|(?:$))/;
          return $1 if $1;
      }
      return $self->SUPER::_get_perl(@_);
  }
```

TAP::Object, TAP::Parser, TAP::Parser::Source,
