—#!/usr/bin/env perl
package
perlhl;
use
strict;
use
warnings;
use
v5.10.1;
use
App::perlhl;
use
Getopt::Long;
use
Pod::Usage;
# ABSTRACT: command-line syntax highlighter for Perl source code
our
$VERSION
=
'0.007'
;
# VERSION
my
%opts
= ();
GetOptions( \
%opts
,
'help|?'
,
'version'
,
'html'
,
);
pod2usage(
-verbose
=> 2,
)
if
$opts
{help};
if
(
delete
$opts
{version}) {
my
$this
= __PACKAGE__;
my
$this_ver
= (
defined
__PACKAGE__->VERSION ? __PACKAGE__->VERSION :
'dev'
);
say
"$this version $this_ver"
and
exit
;
}
my
$mode
=
delete
$opts
{version} ?
'version'
:
'highlight'
;
my
$output
=
delete
$opts
{html} ?
'html'
:
'ansi'
;
App::perlhl->new(
$output
)->run(
$mode
,
@ARGV
);
__END__
=pod
=encoding utf-8
=head1 NAME
perlhl - command-line syntax highlighter for Perl source code
=head1 VERSION
version 0.007
=head1 SYNOPSIS
perlhl < bin/perlhl | less -R
perlhl bin/perlhl lib/App/perlhl.pm
=head1 DESCRIPTION
B<perlhl> is a command line syntax highlighter for Perl code.
=head1 OPTIONS
=over 4
=item B<--help>, -h, -?
Opens this man page and exits.
=item B<--version>
Prints the version of this program and supporting libraries.
=item B<--html>
Output HMTL fragment instead of ANSI terminal escapes.
=back
=head1 USE
Provide input on stdin to B<perlhl> to highlight it to stdout with ANSI colour
escapes.
perlhl < script.pl
It is not recommended to provide multiple files on stdout, since they'll be
concatenated. This makes it impossible to know where one ends and the next
begins, and will yield inferior syntax highlighting results. To highlight
multiple files, provide filenames on the command line:
perlhl lib/My/Module.pm lib/My/Module/Again.pm
Provide the B<--html> option to output an HTML fragment. In
the future, this option might print a whole valid document.
=head1 SEE ALSO
=over 4
=item * L<Syntax::Highlight::Perl::Improved>
=item * L<Term::ANSIColor>
=item * L<Text::Highlight>
=back
There is a one-liner that can do something comparable:
perl -MText::Highlight -E 'my $h = Text::Highlight->new(ansi => 1);
> my $text = do { local $/; open my $fh, "<", $ARGV[0]; <$fh> };
> say $h->highlight("Perl", $text);
> ' bin/perlhl
=head1 AVAILABILITY
The project homepage is L<http://metacpan.org/release/App-perlhl/>.
The latest version of this module is available from the Comprehensive Perl
Archive Network (CPAN). Visit L<http://www.perl.com/CPAN/> to find a CPAN
site near you, or see L<https://metacpan.org/module/App::perlhl/>.
=head1 SOURCE
The development version is on github at L<http://github.com/doherty/App-perlhl>
and may be cloned from L<git://github.com/doherty/App-perlhl.git>
=head1 BUGS AND LIMITATIONS
You can make new bug reports, and view existing ones, through the
web interface at L<https://github.com/doherty/App-perlhl/issues>.
=head1 AUTHOR
Mike Doherty <doherty@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Mike Doherty.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut