Re: Chop command that removes the first character
by BrowserUk (Patriarch) on Oct 26, 2004 at 07:52 UTC
|
sub chip{ substr $_[ 0 ], 0, 1, '' }
my $s = 'the quick brown fox jumps over the lazy dog';
print chip( $s ), ' : ', $s while $s;
t : he quick brown fox jumps over the lazy dog
h : e quick brown fox jumps over the lazy dog
e : quick brown fox jumps over the lazy dog
: quick brown fox jumps over the lazy dog
q : uick brown fox jumps over the lazy dog
u : ick brown fox jumps over the lazy dog
i : ck brown fox jumps over the lazy dog
c : k brown fox jumps over the lazy dog
k : brown fox jumps over the lazy dog
: brown fox jumps over the lazy dog
b : rown fox jumps over the lazy dog
r : own fox jumps over the lazy dog
o : wn fox jumps over the lazy dog
w : n fox jumps over the lazy dog
n : fox jumps over the lazy dog
: fox jumps over the lazy dog
f : ox jumps over the lazy dog
o : x jumps over the lazy dog
x : jumps over the lazy dog
: jumps over the lazy dog
j : umps over the lazy dog
u : mps over the lazy dog
m : ps over the lazy dog
p : s over the lazy dog
s : over the lazy dog
: over the lazy dog
o : ver the lazy dog
v : er the lazy dog
e : r the lazy dog
r : the lazy dog
: the lazy dog
t : he lazy dog
h : e lazy dog
e : lazy dog
: lazy dog
l : azy dog
a : zy dog
z : y dog
y : dog
: dog
d : og
o : g
g :
Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
"Memory, processor, disk in that order on the hardware side. Algorithm, algorithm, algorithm on the code side." - tachyon
| [reply] [d/l] [select] |
|
| [reply] [d/l] |
|
Ooh! Ooh! Ooh! :)
Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
"Memory, processor, disk in that order on the hardware side. Algorithm, algorithm, algorithm on the code side." - tachyon
| [reply] |
|
sub chimp (@) {s!^$/+!! for (@_ ? @_ : $_)}
| [reply] [d/l] |
|
|
chomp() does not remove all trailing record separators, just one. The special case is paragraph mode where all trailing newlines are removed. When in fixed-length record mode ($/ = \$some_int) or slurp mode ($/ = undef) chomp() does nothing. All these special cases aren't handled by &chimp.
Also, the return value isn't analoguous with chomp()'s.
ihb
See perltoc if you don't know which perldoc to read!
| [reply] [d/l] [select] |
Re: Chop command that removes the first character
by Corion (Patriarch) on Oct 26, 2004 at 07:40 UTC
|
perl -le "$f='hello world'; chop reverse $f; print $f"
doesn't work sadly, and the correct approach of
perl -le "$f='hello world'; $f=reverse $f;chop $f;$f=reverse $f; print
+ $f"
is far too clumsy, so relying on the fact that substr returns an lvalue, I'd use:
perl -le "$f='hello world'; substr($f,0,1)=''; print $f"
Of course, there are many many more methods of removing the first character of a string:
perl -le "$f='hello world'; $f=~s!^.!!; print $f"
or
perl -le "$f='hello world'; $f=~s!.!!; print $f"
which I guess is the shortest variant, clocking in at 9 characters. | [reply] [d/l] [select] |
|
perl -le "$f='hello world'; $f=~s!^.!!; print $f"
perl -le "$f='hello world'; $f=~s!.!!; print $f"
should be
perl -le "$f='hello world'; $f=~s!^.!!s; print $f"
perl -le "$f='hello world'; $f=~s!.!!;s print $f"
The first character could be a newline.
| [reply] [d/l] [select] |
Re: Chop command that removes the first character
by insaniac (Friar) on Oct 26, 2004 at 07:46 UTC
|
a simple regex will help you, the beauty of perl :-D
$_="monkey" ;
s/^.(.*)$/$1/;
print
hope this helps..
--
to ask a question is a moment of shame
to remain ignorant is a lifelong shame
| [reply] [d/l] |
|
| [reply] [d/l] |
|
| [reply] [d/l] [select] |
Re: Chop command that removes the first character
by mosh (Scribe) on Oct 26, 2004 at 08:37 UTC
|
Thanks all.
btw, I meant chomp of course... | [reply] |
|
| [reply] |
Re: Chop command that removes the first character
by TedPride (Priest) on Oct 26, 2004 at 07:52 UTC
|
EDIT: I was thinking chomp, my bad. The only real possibility is the following, then:
$varname = substr($varname, 1);
| [reply] [d/l] |
|
| [reply] |
|
| [reply] |
Re: Chop command that removes the first character
by TedPride (Priest) on Oct 26, 2004 at 13:35 UTC
|
Well then, my original solution works:
$textvar =~ s/^\s+//;
I use this one a lot. | [reply] [d/l] |