mapping dirlist to array

Alan Stewart astewart at spawar.navy.mil
Fri Mar 31 12:19:08 CST 2000


~sdpm~
On 30 Mar 00, at 23:40, C. Abney wrote:

>~sdpm~
>Anyone have a nicer way to express this?
>
>    @blastfiles = map { ! /^\./ && -f "$blastdir/$_" && $_ } readdir(DIR);
>
>I'm looking for plain old text files... but don't like this.
>

Map returns an array element for each original element (dir entry), even if it 
fails. Use grep to get just the ones that pass ( and then you don't need && 
$_ ).

   @blastfiles = grep { ! /^\./ && -f "$blastdir/$_" } readdir(DIR);

or if you really just wanted text and not binary files

   @blastfiles = grep { ! /^\./ && -f "$blastdir/$_"  && -T _ } readdir(DIR);

If the !/^\./ is there to get rid of hidden files, OK. If it is there to get rid of . and 
.. then the -f covers that

   @blastfiles = grep { -f "$blastdir/$_" } readdir(DIR);


---------------------------------------------------------------
Alan Stewart          )-[]-(           Electronics Engineer
Code D621           ~        ~         Network Operations
SPAWARSYSCEN       ~          ~  \     Satellite Communications
53560 Hull St   ( ~            ~  )    tel (619)524-3625
San Diego,CA  __|___             /|    fax (619)524-2607
92152-5001   ^\____/^^^^^^\    __| |_  astewart at spawar.navy.mil
------------^^^^^^^^^^^^^^^\__|______|_------------------------
~sdpm~

The posting address is: san-diego-pm-list at hfb.pm.org

List requests should be sent to: majordomo at hfb.pm.org

If you ever want to remove yourself from this mailing list,
you can send mail to <majordomo at happyfunball.pm.org> with the following
command in the body of your email message:

    unsubscribe san-diego-pm-list

If you ever need to get in contact with the owner of the list,
(if you have trouble unsubscribing, or have questions about the
list itself) send email to <owner-san-diego-pm-list at happyfunball.pm.org> .
This is the general rule for most mailing lists when you need
to contact a human.




More information about the San-Diego-pm mailing list