### ----------------------------------------------------
### -- P5__FILE__
### -- Licenses: Artistic-2.0
### -- Authors: Elizabeth Mattijsen
### -- File: README.md
### ----------------------------------------------------
[![Actions Status](https://github.com/lizmat/P5__FILE__/workflows/test/badge.svg)](https://github.com/lizmat/P5__FILE__/actions)

NAME
====

Raku port of Perl's __FILE__ and associated functionality

SYNOPSIS
========

    use P5__FILE__;  # exports __FILE__, __LINE__, __PACKAGE__, __SUB__

DESCRIPTION
===========

This module tries to mimic the behaviour of Perl's `__FILE__`, `__LINE__`, `__PACKAGE__` and `__SUB__` functionality as closely as possible in Raku.

TERMS
=====

__PACKAGE__
-----------

A special token that returns the name of the package in which it occurs.

### Raku

    $?PACKAGE.^name

Because `$?PACKAGE` gives you the actual `Package` object (which can be used for introspection), you need to call the `.^name` method to get a string with the name of the package.

__FILE__
--------

A special token that returns the name of the file in which it occurs.

### Raku

    $?FILE

__LINE__
--------

A special token that compiles to the current line number.

### Raku

    $?LINE

__SUB__
-------

A special token that returns a reference to the current subroutine, or "undef" outside of a subroutine.

### Raku

    &?ROUTINE

Because `&?ROUTINE` gives you the actual `Routine` object (which can be used for introspection), you need to call the `.name` method to get a string with the name of the subroutine.

AUTHOR
======

Elizabeth Mattijsen <liz@raku.rocks>

Source can be located at: https://github.com/lizmat/P5__FILE__ . Comments and Pull Requests are welcome.

COPYRIGHT AND LICENSE
=====================

Copyright 2018, 2019, 2020, 2021 Elizabeth Mattijsen

Re-imagined from Perl as part of the CPAN Butterfly Plan.

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.



