NAME

Acme::Shotgun - Shoots holes in files

SYNOPSIS

use Acme::Shotgun;

my $gun = Acme::Shotgun->new(
    type  => 'double',   # double | pump
    load  => 'bird',     # bird | buck | slug
    quiet => 0,
    debug => 0,
);

$gun->reload();
$gun->check();
$gun->fire(target => '/path/to/file.txt');

DESCRIPTION

Acme::Shotgun is an object-oriented Perl module that shoots holes in plain text files. Supports double-barrel and pump-action shotgun types, with birdshot, buckshot, and slug ammunition - each producing a distinct damage pattern in the target file.

Magazine state is kept in the object itself, so rounds are tracked for the lifetime of the object.

METHODS

new(%args)

Constructs and returns a new Acme::Shotgun object. The gun is automatically reloaded on construction.

my $gun = Acme::Shotgun->new(
    type    => 'double',  # 'double' (default) or 'pump'
    load    => 'bird',    # 'bird' (default), 'buck', or 'slug'
    shots   => undef,     # optional: cap the number of rounds loaded
    quiet   => 0,         # suppress all output
    debug   => 0,         # dry-run mode, no file modifications
    verbose => 1,         # verbose output (disabled automatically if quiet)
);

Dies with an error if an invalid type or load value is given.

reload()

Loads the magazine for the current shotgun type and ammunition. Default capacity is 2 rounds for double and 5 rounds for pump. If shots was set in the constructor and is less than the default capacity, it is used instead.

Prints a loading message and the resulting mag state when verbose is on. Returns the object for chaining.

check()

Prints the current magazine state - shotgun type, ammunition type, and remaining round count. Returns the object for chaining.

fire(target => $path)

Fires all remaining rounds at the given target file, shooting holes into it with each shot. The file must be an existing plain text file under 1 GB. Each shot prints POW! unless quiet is set.

In debug mode, POW! is still printed but no file modifications are made. Returns the object for chaining.

REFERENCE

Shotgun Types

double

Double-barrel. Holds 2 rounds by default. This is the default type.

pump

Pump-action. Holds 5 rounds by default.

Ammunition Types

bird

Birdshot. Sparse, scattered pellet holes spread across the target area. This is the default ammunition type.

buck

Buckshot. Denser, clustered hole patterns - more destructive than birdshot.

slug

Slug. A tight, concentrated blast with minimal spread.

AUTHOR

John R.

LICENSE

Same terms as Perl itself.