On 8/1/07, Bret Goodfellow <[EMAIL PROTECTED]> wrote:
> Okay, I know this has to be simple, but because I am trying to truncate
> or remove a special character I've run into a roadblock.  Here's what I
> want to do.
>
> $value = "12345)" ;
>
> How do I change $value so that the trailing ")" is removed.  In
> otherwords with the given example, how do I manipulate $value so that
> its value is "12345"?  Please keep in mind that $value may be variable
> in length, so I can't use substr($value, 0, 5).  Can split be used to do
> this?  Stumped.

There are many ways to do it.  Which one is best for your situation
depends a lot on your data, its expected values, and how you are going
to use it.

If you always want to remove the last character:
    my $last_char = chop $value;

if you want to remove the last character if it is a certain character or string:
    { local $/ = $string_to_remove; chomp $value }
or
    #note: instead of \Q$string_to_remove\e this can be a regex pattern
    #this is much more useful (if slower) than the chomp
    $value =~ s/(.*)\Q$string_to_remove\e/$1/;

If you and to remove all non-number characters:
    $value =~ s/\D+//g;
or
    $value =~ tr/0-9//cd;

if you want only the numbers at the start of the string:
    #note: if there are no numbers at the start $value will be ''
    $value =~ s/^(\d*)/$1/;
or
    #note: if there are no numbers at the start* $value will be zero
    $value += 0;


* in this case start is defined as ^\s*

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to