in reply to Getting the DATA section of one module in the import() of another

Apparently you can't...

Note: you didn't explicitely mention this, so I will: the DATA handle belongs to the package the end of the source file is in. For your script, that would be main::DATA. In case your proposed mechanism would have worked, it'd still have gotten broken if you had a package statement before the end of the script.

Now, as for alternatives: you could add an explicit sub call that gets the data. It works, but doesn't look all that nice:

# The module: package Foo; sub get { my($caller) = caller; no strict 'refs'; local $/; scalar readline "$caller\::DATA"; } 1; # The main script: use Foo; print Foo->get; __DATA__ Whatever you want...

As an alternative idea, you can use a here-doc instead of a DATA section. That way you can do it while importing. Like this:

package Foo; sub import { shift; my($caller) = caller; no strict 'refs'; ${"$caller\::foo"} = shift; } 1; # The main script: use Foo << '_*_'; This is my data over two lines! _*_ print "\$foo = '$foo'\n";