in reply to Pulling first 10 characters out of string?

Better to use substr, but this caught my eye...
$x = "abcdefghijklmop"; print $x =~/^(.{10})/;

----
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.

Replies are listed 'Best First'.
Re^2: Pulling first 10 characters out of string?
by hmerrill (Friar) on Dec 13, 2004 at 16:08 UTC
    The op did say "digits", so what about
    print $x =~/^(\d{10})/;
      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.

      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!
        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).
        Then you want substr($x,10)=""; (though that will give an error if $x isn't at least 10 characters).