Marius van Witzenburg We fight for our survival, we fight!

14jun/110

How to trim whitespace with a custom subroutine in Perl

Posted by mariusvw

Since perl does not have a built-in trim function (yet). Use the subroutine below to trim whitespace (spaces and tabs) from the beginning and end of a string in Perl. This function is directly based on the Perl FAQ entry, How do I strip blank space from the beginning/end of a string?. The ltrim and rtrim functions can trim leading or trailing whitespace.

#!/usr/bin/perl
 
# Declare the subroutines
sub trim($);
sub ltrim($);
sub rtrim($);
 
# Create a test string
my $string = "  \t  Hello world!   ";
 
# Here is how to output the trimmed text "Hello world!"
print trim($string)."\n";
print ltrim($string)."\n";
print rtrim($string)."\n";
 
# Perl trim function to remove whitespace from the start and end of the string
sub trim($) {
	my $string = shift;
	$string =~ s/^\s+//;
	$string =~ s/\s+$//;
	return $string;
}
# Left trim function to remove leading whitespace
sub ltrim($) {
	my $string = shift;
	$string =~ s/^\s+//;
	return $string;
}
# Right trim function to remove trailing whitespace
sub rtrim($) {
	my $string = shift;
	$string =~ s/\s+$//;
	return $string;
}
10jun/110

How to handle filenames containing whitespace in Bash

Posted by mariusvw

First capture the current IFS in $SAVEIFS and then replace it with a newline instead of spaces, now do your thing and afterwards restore the IFS with $SAVEIFS.

And yes, you can not use new lines in filenames ;-)

#!/usr/local/bin/bash
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for f in *
do
    echo "$f"
done
IFS=$SAVEIFS
Geëtiketeerd als: , , Geen reacties