Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Answer: How do I pull n characters off the front of a string?

( #296137=categorized answer: print w/ replies, xml ) Need Help??

Q&A > strings > How do I pull n characters off the front of a string? contributed by davido

The other examples all handed off the first $n characters. But they didn't remove those first $n characters from the original $string, as the question required.

As always, there is more than one way to do it. For each of the examples below, assume the following setup:

my $string = "1234567890abcdefghijABCDEFGHIJK"; my $chars; my $n = 2;

With substr:

$chars = substr( $string, 0, $n ); substr( $string, 0, $n ) = "";

Another with substr:

( $chars, $string ) = ( substr($string,0,$n), substr($string,$n) );

And probaby the best substr solution:

$chars = substr ($string, 0, $n, "");

With a substitution s/// regexp:

$string = s/^(.{$n})(.*)$/$2/s; $chars = $1;

With split:

($chars, $string) = split /^(.{$n})/, $string, 1;

With a pattern match (m//):

($chars, $string) = $string =~ /^(.{$n})(.*)$/s;

With unpack (Not for the faint of heart):

( $chars, $string ) = unpack "a$n a@{[length($string)-$n]}", $string;

Comment on Answer: How do I pull n characters off the front of a string?
Select or Download Code
Replies are listed 'Best First'.
Re: Answer: How do I pull n characters off the front of a string?
by Aristotle (Chancellor) on Oct 03, 2003 at 22:31 UTC
    unpack:
    ($chars, $string) = unpack "a$n a*", $string;
    The four parameter substr is clearly the cleanest solution though.

    Makeshifts last the longest.

Log In?
Username:
Password:

What's my password?
Create A New User
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (4)
As of 2015-07-28 06:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (252 votes), past polls