| Text-Chomp documentation | Contained in the Text-Chomp distribution. |
Text::Chomp - a module implementing a portable chomp.
use strict;
use warnings;
use Text::Chomp;
open FILE, "file.dat"
or die "Unable to open file: $!";
while (<FILE>) {
# Strip off any end of line character, not just $/
my $line = tchomp $_;
...
}
close FILE;
Text::Chomp implements a single function, tchomp, which will remove all known (by me, at least) line separators. chomp() works only on the value in $/, which can be difficult if working in multi-platform environments.
tchomp() is the only function exported. Attempts to export other functions will cause the module to fail to load.
This function removes the end of line character from a line of text and returns the text. Line separators currently handled include:
Precompile the regular expression used for speed, and so that it can be accessed for split().
Please report any bugs or feature requests to
bug-text-chomp@rt.cpan.org, or through the web interface at
http://rt.cpan.org. I will be notified, and then you'll automatically
be notified of progress on your bug as I make changes.
Original inspiration came from an ancient perlbug http://rt.perl.org/rt3/Ticket/Display.html?id=1807. #p5p provided some additional ideas regarding the Unicode (and a suggested name of Ch::omp). Finally, the "Perl Cookbook" had information on how to match the Unicode line and page separators.
Copyright 2004 Steve Peters, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Text-Chomp documentation | Contained in the Text-Chomp distribution. |
package Text::Chomp; use warnings; use strict; our $VERSION = '0.02'; my %symbols = map {$_ => 1} qw /tchomp/; sub import { my $class = shift; my $caller = caller; foreach my $name (@_ ? @_ : keys %symbols) { die "'$name' is not exported.\n" unless $symbols {$name}; no strict 'refs'; *{$caller . "::$name"} = \&{$class . "::$name"} } } sub tchomp { my $text = shift; # Matching with the hex values for the various line separators $text =~ s/^(.*?)(?:\x0D\x0A|\x0A|\x0D|\x0C|\x{2028}|\x{2029})/$1/s; return $text; } __END__
1; # End of Text::Chomp