File::LsColor - Colorize input filenames just like ls does
use File::LsColor qw(:all); # Is equal to: use File::LsColor qw( ls_color ls_color_custom ls_color_default ls_color_internal get_ls_colors can_ls_color ls_color_lookup parse_ls_colors ); my @files = glob("$ENV{HOME}/*"); print "$_\n" for ls_color @files; # or specify own pattern @files = ls_color_custom('*.pl=38;5;196;1:*.pm=38;5;220', @files); # or use the internal mappings @files = ls_color_internal(@files); # or use the defaults (only ANSI colors) @files = ls_color_default(@files); # returns a hashref with all defined filetypes and their attributes my $ls_colors = get_ls_colors(); # what's the defined attributes for directories? my $dir_color = can_ls_color('di'); # can we apply attributes to this filetype? my $filetype = shift; printf "%s can be colored.\n" if can_ls_color($filetype); # apply terminal color even if we can't use LS_COLORS to do so. my $file_with_extension = 'foobar.flac'; printf "%s looks nice.\n", can_ls_color($file_with_extension) ? ls_color($file_with_extension) : Term::ExtendedColor::fg(32, $file_with_extension);
This module provides functionality for using the LS_COLORS variable for colorizing output in a way that's immediately recognized.
Say that you have a list of filenames that's the result of some complex operation, and you wish to present the result to the user.
If said files have an extension and that extension is present in the users LS_COLORS variable, they will be colored just like they would have been if the filenames were output from ls(1) or tree(1).
None by default.
Arguments: @files | \@files
Returns: @files | @files
Returns a list of filenames colored as specified by the environment LS_COLORS variable. If the LS_COLORS variable is not set, use the default gnu specification.
LS_COLORS
In scalar context a string joined by '' is returned.
The same thing as ls_color(), but uses the default LS_COLORS values from GNU ls. Those are only ANSI colors.
ls_color()
The same as ls_color(), with one minor difference; Instead of using the LS_COLORS variable from the environment, an internal specification is used. This specification contains about 250 extensions as of this writing.
The first argument to ls_color_custom() should be a valid LS_COLORS definition, like so:
ls_color_custom()
ls_color_custom("*.pl=38;5;196:*.pm=38;5;197;1", @perl_files);
Returns a hash reference where a key is the extension and its value is the attributes attached to it.
Arguments: $file Returns: $attributes
Given a valid name, returns the defined attributes associated with it. Else, returns undef.
The same as can_ls_color(), exportable because of compatibility reasons.
Returns a hashref with extension => attribute mappings, i.e:
'7z' => '01;31', 'aac' => '00;36', 'ace' => '01;31', 'anx' => '01;35', 'arj' => '01;31',
If the internal $NO_STAT variable is set, no stat call wil be made on the input filenames. This can be desired if the filenames aren't real files, or for performance reasons.
$NO_STAT
Magnus Woldrich CPAN ID: WOLDRICH m@japh.se http://japh.se https://github.com/trapd00r
Report bugs on https://github.com/trapd00r/File-LsColor or to m@japh.se
None required yet.
Copyright 2011, 2018, 2019- the File::LsColor "AUTHOR" and "CONTRIBUTORS" as listed above.
This library is free software; you may redistribute it and/or modify it under the same terms as Perl itself.
To install File::LsColor, copy and paste the appropriate command in to your terminal.
cpanm
cpanm File::LsColor
CPAN shell
perl -MCPAN -e shell install File::LsColor
For more information on module installation, please visit the detailed CPAN module installation guide.