The op did say "digits", so what about
print $x =~/^(\d{10})/;
| [reply] [d/l] |
Definitely have a point. Guess it depends on where the data validation goes on.
----
Give me strength for today..
I will not talk it away..
Just for a moment..
It will burn through the clouds..
and shine down on me.
| [reply] |
Neither "$x =~/^(.{10})/;" nor "$x =~/^(\d{10})/;" seem to work. When I print them out, I still have 11 characters.
A little more info. The variable has already been set, to a string with 10 or more digits. I want to reset the value to just the first 10 digits. This is what I tried:
$x = "12345678901";
$x =~ /^(\d{10})/; ( I also tried $x =~ /^(.{10})/; )
print "$x\n";
This still prints "12345678901", instead of "12345678900".
I'll look at the substr doc.
Thanks!
| [reply] |
What's happening is that "$x =~ /^(.{10)/" is matching the first ten characters, and copying them into $1 for future use. If you want to replace $x, you want one of
$x =~ s/^(.{10}).*/$1/;
($x) = $x =~ /^(.{10})/;
$x = substr($x, 0, 10);
susbstr($x, 10) = '';
Any of them work, so use whichever style you like most (personally, I think I prefer the last one). | [reply] [d/l] [select] |
Then you want substr($x,10)=""; (though that will give an error if $x isn't at least 10 characters).
| [reply] [d/l] |