Skip to content

BlueSquare23/Acme-Shotgun

Repository files navigation

CI

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.

About

Shoots holes in files

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages