Acme::ButFirst − Do something, but first do something else.

        use Acme::ButFirst;

        # Print a greeting, but first find caffiene.

                print "Good morning!\n";
        } but first {
                print "I need a coffee\n";

        # Count from 1 to 10, but first print a statement
        # about our counting skills.

        foreach my $count (1..10) {
                print "$count\n";
        } but first {
                print "I can count to...";

        # Print our lines, but first reverse them, but first convert
        # them into upper case.

        while (<>) {
        } butfirst {
                $_ = reverse $_;
        } butfirst {
                $_ = uc $_;

"Acme::ButFirst" allows you to execute a block of code, but
first do something else.  Perfect for when you wish to add
to the start of a long block of code, but don’t have the
energy to scroll upwards in your editor.

     "Acme::ButFirst" recognises both "butfirst" and "but
first" as keywords.

     Usage of "Acme::ButFirst" is lexically scoped.
ButFirstification can be explicitly disabled by using "no


     Acme::Dont::t, Acme::ComeFrom, Acme::Goto::Line

Any use of this module should be considered a bug.

     Strings in the form of " { work } but first { coffee }
" may sometimes be incorrectly munged.


Paul Fenwick <>

Copyright (C) 2005 by Paul Fenwick

     This library is free software; you can redistribute it
and/or modify it under the same terms as Perl itself, either
Perl version 5.8.7 or, at your option, any later version of
Perl 5 you may have available.