in reply to Re^2: Pulling first 10 characters out of string?
in thread Pulling first 10 characters out of string?

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!
  • Comment on Re^3: Pulling first 10 characters out of string?

Replies are listed 'Best First'.
Re^4: Pulling first 10 characters out of string?
by Eimi Metamorphoumai (Deacon) on Dec 13, 2004 at 20:40 UTC
    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).
Re^4: Pulling first 10 characters out of string?
by ysth (Canon) on Dec 13, 2004 at 20:34 UTC
    Then you want substr($x,10)=""; (though that will give an error if $x isn't at least 10 characters).