exports:
- str_pad
- STR_PAD_RIGHT
- STR_PAD_LEFT
- STR_PAD_BOTH
docs: TBD
code: |
use constant STR_PAD_RIGHT => 1;
use constant STR_PAD_LEFT => 2;
use constant STR_PAD_BOTH => 3;
sub str_pad
{
my ( $input, $length, $pad, $options ) = validate_pos( @_,
STRING,
INTEGER,
{ %{+STRING}, optional => 1, default => ' ' },
{ %{+INTEGER}, optional => 1, default => STR_PAD_RIGHT },
);
return $input if $length < length $input;
# Work out where to place our string.
my $start = 0;
my $diff = $length - length $input;
my $rv;
if ( $options == STR_PAD_RIGHT )
{
my $padding = substr( $pad x $diff, 0, $diff );
$rv = $input . $padding;
}
elsif ( $options == STR_PAD_LEFT )
{
my $padding = substr( $pad x $diff, 0, $diff );
$rv = $padding . $input;
}
elsif ($options == STR_PAD_BOTH )
{
$rv = substr( $pad x $length, 0, $length );
substr( $rv, $diff / 2, length $input ) = $input;
}
else
{
croak "Invalid 4th argument to str_pad";
}
$rv;
}