TCLUG Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [TCLUG:18790] quick way to strip spaces...



Ok, this one should maybe be a bit of a brain teaser for some of you out
there...I don't actually NEED the answer to the question below, I just
thought some of you might like to stretch your perl muscles a little
bit...then again, for as much as I know about perl, its probably trivial...!

for that same directory, I want to strip out all spaces, brackets of any
kind, commas and tildes, change all .MP3 extensions to .mp3, and run a chmod
0655 on the bunch as well....can all this be done as part of the same perl
statement, and what would it look like.

Would it be better at this point to actually make a perl script to do it
all, instead of just continuously typing in that long line of code again and
again(say once every week or so...)

> From: Brian Ackermann <brian_ackermann@bbros.com>
> Reply-To: tclug-list@mn-linux.org
> Date: Thu, 15 Jun 2000 09:55:03 -0500
> To: <tclug-list@mn-linux.org>
> Subject: Re: [TCLUG:18790] quick way to strip spaces...
> 
> perl -e 'opendir D, "."; for(readdir D) {$x=$_; s/[(,)]/_/g; rename $x,
> $_;}'
> 
> That did the trick perfectly!!  (I also had some commas to remove, so I
> added that bit in as well...)
> 
>> From: Troy Johnson <john1536@tc.umn.edu>
>> Reply-To: tclug-list@mn-linux.org
>> Date: Wed, 14 Jun 2000 17:05:17 -0500
>> To: tclug-list@mn-linux.org
>> Subject: Re: [TCLUG:18790] quick way to strip spaces...
>> 
>> Brian Ackermann wrote:
>>>> From: "Eric Hillman" <ehillman@cccu.com>
>>>> 
>>>> perl -e 'opendir D, "."; for(readdir D) {$x=$_; s/\s+/_/g; rename $x, $_;}'
>>> 
>>> However, I'm wondering if you could explain this bit for me...
>>> {$x=$_; s/\s+/_/g; rename $x, $_;}
>>> I also am going to need to strip out '(' and ')', and I'm not seeing how to
>>> do that.
>> 
>> {$x=$_; s/\s+/_/g; s/[()]//g; rename $x, $_;}
>> 
>> The semicolons (';') here separate single statements.
>> 
>> The '$_' variable is a special default variable for loops. When 'readdir
>> D' produces a list of files names, the 'for' loop sends them one at a
>> time throught the loop and assigns the file name to the $_ variable.
>> '$x' here is just a variable to store the old file name for use in the
>> 'rename' function.
>> 
>> The regular expression substitutions ('s/../../g') can be used to work
>> on variables ('$n =~ s/1/2/g; # replace ones with twos in n'), but when
>> no variable is given, the substitution works on the default '$_'
>> variable instead.
>> 
>> The 's/[()]//g' part is a substitution ('s') and it is global ('g'). The
>> '/' characters separate: the regular expression type or function ('s'),
>> what is matched ('[()]'), what replaces a match ('' or nothing), and the
>> options ('g'). The '[' and ']' delimit a set of characters to be
>> matched, and this one will match a '(' charcter or a ')' character. The
>> global ('g') option means it can match more than once per line or input
>> chunk.
>> 
>> Sorry if that seems to simplistic or complicated. I am just practicing
>> my written English. ;-)
>> 
>> Good luck, and get "Learning Perl" or "Programming Perl". You will not
>> regret it,
>> 
>> Troy
>> 
>> -- 
>> Troy Johnson   mailto:john1536@tc.umn.edu   http://umn.edu/~john1536/
>> Question with boldness even the existence of a God; because, if there
>> be one, he must more approve the homage of reason, than that of
>> blindfolded fear.... Do not be frightened from this inquiry from any
>> fear of its consequences. If it ends in the belief that there is no
>> God, you will find incitements to virtue in the comfort and
>> pleasantness you feel in its exercise...
>> -- Thomas Jefferson, in a 1787 letter to his nephew
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: tclug-list-unsubscribe@mn-linux.org
>> For additional commands, e-mail: tclug-list-help@mn-linux.org
>> 
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tclug-list-unsubscribe@mn-linux.org
> For additional commands, e-mail: tclug-list-help@mn-linux.org
> 
>