Skip to content

Instantly share code, notes, and snippets.

View Ovid's full-sized avatar

Ovid Ovid

View GitHub Profile
@Ovid
Ovid / perlclasstut.pod
Last active December 6, 2022 10:40
Corinna Class Tutorial
@Ovid
Ovid / gist:0674ef8fe906f10cc8f2
Created July 5, 2014 18:43
Procedural quest generation
#!/usr/bin/env perl
use 5.10.0;
use strict;
use warnings;
use Getopt::Long;
use Data::Dumper;
$Data::Dumper::Indent = 0;
$Data::Dumper::Terse = 1;
@Ovid
Ovid / .perldb
Last active July 5, 2022 15:50
My debugger file
package Ovids::Debugger;
# vim: syntax=perl
=head1 NAME
.perldb - Customize your Perl debugger
=head1 USAGE
@Ovid
Ovid / SeKreT.pm
Created May 15, 2022 10:31
New test SQLite databases on the fly
# I needed to sure I was operating on pristine test databases
# every time my code called $test->schema (DBIx::Class and Test::Class::Moose).
# This handles that for me
package TestsFor::SeKreT {
use Test::Class::Moose;
use Less::Boilerplate; # gives me a sane version of Perl
use File::Copy qw(copy);
use File::Spec::Functions qw(catfile);
use SeKreT::Util::Data qw(
make_slug
@Ovid
Ovid / grep.pm
Last active May 12, 2022 12:36
A small hack to add a 'sqitch grep ...' command that sorts things in the order of the sqitch plan
package App::Sqitch::Command::grep;
use 5.010;
use strict;
use warnings;
use utf8;
use App::Sqitch::X qw(hurl);
use Moo;
use App::Sqitch::Target;
use App::Sqitch::Types qw(Str Enum Target Bool);
@Ovid
Ovid / exception.md
Last active March 21, 2022 06:51
Exceptions in Perl?

Preface

This is something that likely cannot be made into an RFC for the Perl language at this time because implementation would be greatly simplified when the Corinna object model is in core. For example, a base class for what is discussed might look like the following:

# Exception is a poor name for warnings, so a better name is warranted
class Exception :version(v0.1.0) {
    # $message and $description might be from a messaging role
    field $message     :reader :param;
    field $description :reader :param { "" };
@Ovid
Ovid / dep-scanner.pl
Last active November 12, 2021 12:33
Sample of PPR-based dependency scanner
#!/usr/bin/env perl
# I decided it was time to learn PPR::X (Damian Conway's excellent regex-based Perl parser)
#
# This code is still heuristic in nature, but the challenge seemd fun.
#
# I thought it would be an interesting project to try to extract dependencies from
# Perl code. Thanks to `haj` giving me the clue needed to find a parsing error
use strict;
@Ovid
Ovid / find_duplicate_code.pl
Created December 7, 2012 08:47
Find Duplicate Code in Perl (a hack)
#!/usr/bin/env perl
use 5.12.0;
use autodie;
use Carp;
use utf8::all;
use File::Spec::Functions qw(catfile catdir);
use File::Find::Rule;
use Getopt::Long;
use Capture::Tiny qw(capture);
@Ovid
Ovid / cor.md
Last active September 12, 2021 08:02
Cor—A minimal object system for the Perl core

NAME

Cor — A minimal OO proposal for the Perl core

VERSION

This is version 0.10 of this document.

AUTHOR

@Ovid
Ovid / Counter.pl
Created February 8, 2021 10:14
user-defined attributes in Cor?
class Counter {
# My::Cor::Attributes is using some hypothetical
# tool to extend Cor attributes. Because it's a
# `use` statement, it happens at compile time
use My::Cor::Attributes ':isa';
has $count :reader :new :isa(PositiveInt) = 0;
method inc () { $count++ }
method dec () { $count-- unless 0 == $count }
}