NAME Acme::PPIx::MetaSyntactic - rename functions and variables in a PPI::Document using Acme::MetaSyntactic SYNOPSIS my $acme = "Acme::PPIx::MetaSyntactic"->new(document => \<<'END'); use v5.010; use constant PLACE => "World"; sub join_spaces { return join " ", @_; } my @greetings = qw(Hello); say join_spaces($greetings[0], PLACE); END say $acme->document; Example output: use v5.010; use constant VULTURE => "World"; sub fraud { return join " ", @_; } my @gang_of_thieves = qw(Hello); say fraud($gang_of_thieves[0], VULTURE); DESCRIPTION This module uses PPI to parse some Perl source code, find all the variables and function names defined in it, and reassign them random names using Acme::MetaSyntactic. Constructor This module is object-oriented, though there's really very little reason for it to be. "new(%attributes)" Moose-style constructor. Attributes All attributes are read-only. "document" The PPI::Document that will be munged. Can be coerced from a "Str" (filename), "ScalarRef[Str]" (string of Perl source), "ArrayRef[Str]" (lines of Perl source) or "FileHandle". Required. Once the "document" attribute has been set, a trigger automatically runs the relabelling. "theme" The Acme::MetaSyntactic object that will be used to obtain new names. If your source code is more than a couple of lines; choose one that provides a large selection of names. Can be coerced from "Str" (theme name). Defaults to the "haddock" theme. "local_subs" HashRef where the keys are the names of subs which are considered locally defined (i.e. not Perl built-ins, and not imported) and thus available for relabelling. Values are expected to all be "1". Can be coerced from "ArrayRef[Str]". Defaults to a list built by scanning the "document" with PPI. "names" HashRef mapping old names to new names. This will be populated by the relabelling process, but you may supply some initial values. Defaults to empty hashref. "already_used" HashRef keeping track of names already used in remapping, to avoid renaming two variables the same thing. Defaults to a hashref populated from "names". This attribute cannot be provided to the constructor. BUGS Please report any bugs to . SEE ALSO PPI, Acme::MetaSyntactic, Acme::MetaSyntactic::RefactorCode. AUTHOR Toby Inkster . COPYRIGHT AND LICENCE This software is copyright (c) 2013 by Toby Inkster. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.