package lib_bs22::SourceStash;
use strict;

our $filter_enabled;  # Default to disabled
our $source = '';
our $filename;

BEGIN {
    if (eval { require Filter::Simple; 1 }) {
        Filter::Simple->import();
        $filter_enabled = 1;  # Enable filtering if module loads successfully
    }
}

if ($filter_enabled) {
    FILTER { $source .= $_; } 0;
}

1;

=head1 NAME
SourceStash.pm

=head1 SYNOPSIS
I don't love this module, but it performs a needed task.
The Perl Navigator is passing Perl source code directly into perl via stdin for compilation, and I would like to inspect that code later in the same process.
When loaded, this simply stores the source in the variable $lib_bs22::SourceStash::source.
The other dependencies don't have lib_bs22 as prefix, but SourceStash is loaded before main script compiles, and I don't want to mess with their include path until after.

I think there's a bug in FILTER::SIMPLE that drops the __END__ line, but keeps comments after it. Without the __END__ line, I can't remove it later;
the 0 stops this behaviour and I can remove it manually later

If you have an actual saved file with the source, you don't need this module.

If any Perl Gurus are reading this and have a better way to access the source of a program run through STDIN, please let me know. Thanks!