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;
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.