[31523] in Perl-Users-Digest

home help back first fref pref prev next nref lref last post

Perl-Users Digest, Issue: 2782 Volume: 11

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Fri Jan 22 06:09:43 2010

Date: Fri, 22 Jan 2010 03:09:09 -0800 (PST)
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)

Perl-Users Digest           Fri, 22 Jan 2010     Volume: 11 Number: 2782

Today's topics:
        How to taint a variable (for testing) <no.email@please.post>
    Re: How to taint a variable (for testing) <sreservoir@gmail.com>
    Re: How to taint a variable (for testing) <ben@morrow.me.uk>
    Re: How to taint a variable (for testing) <sreservoir@gmail.com>
        Inline::C + -T problem <no.email@please.post>
    Re: Inline::C + -T problem <ben@morrow.me.uk>
    Re: Inline::C + -T problem <sisyphus359@gmail.com>
    Re: Inline::C + -T problem <sisyphus359@gmail.com>
        Leanest way to get at keyboard events ? <peter@www.pjb.com.au>
    Re: Leanest way to get at keyboard events ? (Alan Curry)
    Re: macros: return or exit <uri@StemSystems.com>
    Re: macros: return or exit <marc.girod@gmail.com>
    Re: macros: return or exit <ben@morrow.me.uk>
    Re: macros: return or exit <uri@StemSystems.com>
    Re: macros: return or exit <marc.girod@gmail.com>
    Re: macros: return or exit <marc.girod@gmail.com>
    Re: Modules for PDFs especially tables. <nospam-abuse@ilyaz.org>
    Re: Modules for PDFs especially tables. <ben@morrow.me.uk>
    Re: Modules for PDFs especially tables. <rvtol+usenet@xs4all.nl>
    Re: Modules for PDFs especially tables. <whynot@pozharski.name>
        need some help excluding with file::find::rule <globalsec@hotmail.com>
        Posting Guidelines for comp.lang.perl.misc ($Revision:  tadmc@seesig.invalid
    Re: Strip control characters in a file <ben@morrow.me.uk>
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

----------------------------------------------------------------------

Date: Thu, 21 Jan 2010 20:19:40 +0000 (UTC)
From: kj <no.email@please.post>
Subject: How to taint a variable (for testing)
Message-Id: <hjacss$8n1$1@reader1.panix.com>



For testing purposes I would like to be able to intentionally taint
a variable.  What's the easiest way to do this?

TIA!

~K

P.S. I tried mucking around with the function SvTAINT and Inline::C,
but my test script crashes when I run it under -T.  Code below;
completely untested.

#!/usr/bin/perl

BEGIN {
  @INC = map { /(.*)/; $1 } @INC;
}

# the following Inline configuration sidesteps an "insecure
# dependency" fatal error when run under -T
use Inline (Config =>
            DIRECTORY => '/home/jones/tmp/_Inline');

use Inline C;

use strict;
use warnings FATAL => 'all';

my $v = 42;
print +(is_tainted($v) ? 1 : 0), "\n";
taint($v);
print +(is_tainted($v) ? 1 : 0), "\n";

sub is_tainted {
  # adapted from code in Programming Perl 3d ed, p. 561
  my $arg = shift;
  my $empty = do {
    no warnings 'uninitialized';
    substr( $arg, 0, 0 );
  };
  local $@;
  eval { eval "# $empty" };
  return length( $@ ) != 0;
}

__END__
__C__

void taint(SV *sv) {
  SvTAINT(sv);
  TAINT;
  return;
}




------------------------------

Date: Thu, 21 Jan 2010 16:24:45 -0500
From: sreservoir <sreservoir@gmail.com>
Subject: Re: How to taint a variable (for testing)
Message-Id: <hjagmu$ga6$1@speranza.aioe.org>

On 1/21/2010 3:19 PM, kj wrote:
> For testing purposes I would like to be able to intentionally taint
> a variable.  What's the easiest way to do this?

$string .= substr($taint, 0, 0);

-- 

   "Six by nine. Forty two."
   "That's it. That's all there is."
   "I always thought something was fundamentally wrong with the universe"


------------------------------

Date: Thu, 21 Jan 2010 23:43:03 +0000
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: How to taint a variable (for testing)
Message-Id: <7d5n27-b512.ln1@osiris.mauzo.dyndns.org>


Quoth sreservoir <sreservoir@gmail.com>:
> On 1/21/2010 3:19 PM, kj wrote:
> > For testing purposes I would like to be able to intentionally taint
> > a variable.  What's the easiest way to do this?
> 
> $string .= substr($taint, 0, 0);

And, for reference, $^X is always tainted.

There are also various modules on CPAN with Taint in their names, some
of which will let you turn taint mode on/off and taint/untaint variables
directly.

Ben



------------------------------

Date: Thu, 21 Jan 2010 18:58:43 -0500
From: sreservoir <sreservoir@gmail.com>
Subject: Re: How to taint a variable (for testing)
Message-Id: <hjapnm$tan$1@speranza.aioe.org>

On 1/21/2010 6:43 PM, Ben Morrow wrote:
>
> Quoth sreservoir<sreservoir@gmail.com>:
>> On 1/21/2010 3:19 PM, kj wrote:
>>> For testing purposes I would like to be able to intentionally taint
>>> a variable.  What's the easiest way to do this?
>>
>> $string .= substr($taint, 0, 0);
>
> And, for reference, $^X is always tainted.

so is $0.

and if I'm wrong, then it's bug report time.

-- 

   "Six by nine. Forty two."
   "That's it. That's all there is."
   "I always thought something was fundamentally wrong with the universe"


------------------------------

Date: Thu, 21 Jan 2010 21:06:04 +0000 (UTC)
From: kj <no.email@please.post>
Subject: Inline::C + -T problem
Message-Id: <hjafjs$qh0$1@reader1.panix.com>



The following test script fails when run under -T, but runs without
error otherwise:


#!/usr/bin/perl

# VERSION 1

use Inline (Config =>
            DIRECTORY => '/home/roth/berriz/local/pub/work/proj/BuildSynergizer/_Inline');

use Inline C;
use strict;

hello();

__END__
__C__
#include <stdio.h>

void hello() {
  printf("hello world\n");
}


The error is:

Insecure dependency in require while running with -T switch at blib/lib/Inline.pm (autosplit into blib/lib/auto/Inline/find_temp_dir.al) line 1257, <DATA> line 1.
INIT failed--call queue aborted, <DATA> line 1.

I Googled the error message, and found a workaround, consisting of
the added Config => DIRECTORY lines shown below:


#!/usr/bin/perl

# VERSION 2

use Inline (Config =>
            DIRECTORY => '/home/jones/tmp/_Inline');

use Inline C;
use strict;

hello();

__END__
__C__
#include <stdio.h>

void hello() {
  printf("hello world\n");
}

The new script still fails if run under -T, but now the error now
is different:

Insecure dependency in require while running with -T switch at /usr/local/share/perl/5.10.0/Inline.pm line 498.
INIT failed--call queue aborted.

The offending line in Inline.pm (498) is "require DynaLoader;", so
I added the following untainting code at the top of the script,
but it did not get rid of this error:

#!/usr/bin/perl

# VERSION 3

BEGIN {
  @INC = map { /(.*)/; $1 } @INC;
}

# etc.

I've run out of ideas.

What must one do to run Inline::C code under -T ???

TIA!

~K

P.S. I'm aware of the UNTAINT config option for Inline, but, AFAICT
enabling it would defeat the use I want to make of taint mode. 


------------------------------

Date: Thu, 21 Jan 2010 23:47:26 +0000
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: Inline::C + -T problem
Message-Id: <el5n27-b512.ln1@osiris.mauzo.dyndns.org>


Quoth kj <no.email@please.post>:
> 
> What must one do to run Inline::C code under -T ???

Don't? Dynamic re-compilation seems like a Really Bad Idea when security
is an issue, to me.

Less facetiously, I suspect you will stop getting these errors if you
write your code as a proper module and install it with
Inline::MakeMaker.

Ben



------------------------------

Date: Fri, 22 Jan 2010 00:15:21 -0800 (PST)
From: sisyphus <sisyphus359@gmail.com>
Subject: Re: Inline::C + -T problem
Message-Id: <59d768d9-80bc-4e76-827b-232ebc849d97@l30g2000yqb.googlegroups.com>

On Jan 22, 8:06=A0am, kj <no.em...@please.post> wrote:

> P.S. I'm aware of the UNTAINT config option for Inline, but, AFAICT
> enabling it would defeat the use I want to make of taint mode.

It's quite likely that UNTAINT won't work, anyway. And if it does
work, it's just going to untaint things blindly - and that's not what
you (and probably anyone else) wants.

Better to avoid the Inline dependency altogether, and just write it as
a normal perl extension (which, I think, is what Ben was
recommending.) To that end, if you have all of your Inline::C
functions laid out in a file (say './functions.c') you might find
InlineX::C2XS useful. It can create the XS file, a stub .pm file, and
a Makefile.PL for you (in the current directory) with:

perl -MInlineX::C2XS -we 'c2xs("My::Mod", "My::Mod",
{WRITE_MAKEFILE_PL=3D>1, WRITE_PM=3D>1, VERSION=3D>0.01, SRC_LOCATION=3D>".=
/
functions.c", USING=3D>"ParseRegExp"});'

(USING=3D>"ParseRegExp" is not mandatory - it just provides much faster
parsing of the C code than the default Parse::RecDescent.)

Cheers,
Rob


------------------------------

Date: Fri, 22 Jan 2010 01:07:56 -0800 (PST)
From: sisyphus <sisyphus359@gmail.com>
Subject: Re: Inline::C + -T problem
Message-Id: <cd029698-f251-46cf-b398-a95e1c8394c7@p24g2000yqm.googlegroups.com>

On Jan 22, 7:15=A0pm, sisyphus <sisyphus...@gmail.com> wrote:

> perl -MInlineX::C2XS -we 'c2xs("My::Mod", "My::Mod", .....

Correction:

perl -MInlineX::C2XS -we 'InlineX::C2XS::c2xs("My::Mod",
"My::Mod", .....

I hope that's the only error .... (no guarantees)

Cheers,
Rob


------------------------------

Date: 22 Jan 2010 01:03:58 GMT
From: Peter Billam <peter@www.pjb.com.au>
Subject: Leanest way to get at keyboard events ?
Message-Id: <slrnhlhubu.3mc.peter@box8.pjb.com.au>

In a small command-line app, e.g. running in an xterm or a
linux console, I need to get at the keydown and keyup events.

( I realise this is impossible with a vt100 over a
  serial line, and hence presumably with /dev/tty. )

I don't really want to have to use a whole GUI infrastructure
and do something like start up an invisible transparent window
overlaying the xterm - plus that wouldn't work on a linux console.

Is there any way ?

Regards,  Peter

-- 
Peter Billam       www.pjb.com.au    www.pjb.com.au/comp/contact.html


------------------------------

Date: Fri, 22 Jan 2010 01:27:22 +0000 (UTC)
From: pacman@kosh.dhis.org (Alan Curry)
Subject: Re: Leanest way to get at keyboard events ?
Message-Id: <hjautq$3kv$1@speranza.aioe.org>

In article <slrnhlhubu.3mc.peter@box8.pjb.com.au>,
Peter Billam  <contact.html@www.pjb.com.au> wrote:
>In a small command-line app, e.g. running in an xterm or a
>linux console, I need to get at the keydown and keyup events.

On a VC (i.e. /dev/tty1 through /dev/tty63) you can put the keyboard into
raw (scancode) or medium-raw (keycode) mode with the KDSKBMODE ioctl. See
console_ioctl(4). It shouldn't take much to make that work from perl.

Just beware of leaving the keyboard in that state when your program exits -
that makes the console pretty hard to use. (If that happens, SysRq+R can get
out of it.)

>
>I don't really want to have to use a whole GUI infrastructure
>and do something like start up an invisible transparent window
>overlaying the xterm - plus that wouldn't work on a linux console.
>
>Is there any way ?

The xterm case will probably be harder.

-- 
Alan Curry


------------------------------

Date: Thu, 21 Jan 2010 14:33:20 -0500
From: "Uri Guttman" <uri@StemSystems.com>
Subject: Re: macros: return or exit
Message-Id: <87k4vbnthb.fsf@quad.sysarch.com>

>>>>> "MG" == Marc Girod <marc.girod@gmail.com> writes:

  MG> On Jan 21, 6:41 pm, "Uri Guttman" <u...@StemSystems.com> wrote:
  >> it is irrelevant about which binary. the issue is how do you manage its
  >> i/o via its stdio. that is the same problem for any binary subprocess
  >> you want to run with its stdio. now you never answered the question
  >> about which select function you meant.

  MG> The C function that the cleartool binary does not use.

  MG> I was not saying my code doing select in any way. I meant its *not*
  MG> doing select.
  MG> It may be me who do not understand...
  MG> If I fork part of my script, there will be two instances sharing the
  MG> same background process.
  MG> I cannot see this work.

  MG> Does it make better sense  now?

not at all. when you fork, why not pass some flag to tell one of the
procs not to deal with the background process? in the other process,
close off the handles to that background process.

uri

-- 
Uri Guttman  ------  uri@stemsystems.com  --------  http://www.sysarch.com --
-----  Perl Code Review , Architecture, Development, Training, Support ------
---------  Gourmet Hot Cocoa Mix  ----  http://bestfriendscocoa.com ---------


------------------------------

Date: Thu, 21 Jan 2010 12:41:09 -0800 (PST)
From: Marc Girod <marc.girod@gmail.com>
Subject: Re: macros: return or exit
Message-Id: <469afa86-1726-429e-8264-6a5ca71c08e8@r24g2000yqd.googlegroups.com>

On Jan 21, 7:33 pm, "Uri Guttman" <u...@StemSystems.com> wrote:

> not at all. when you fork, why not pass some flag to tell one of the
> procs not to deal with the background process? in the other process,
> close off the handles to that background process.

Not to deal with the background process ?
But what should it do then ?
The whole purpose is to interface it !

It could compute pi decimals, or have dinner.
Once it has a fork...

Marc


------------------------------

Date: Thu, 21 Jan 2010 23:29:05 +0000
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: macros: return or exit
Message-Id: <1j4n27-b512.ln1@osiris.mauzo.dyndns.org>


Quoth Marc Girod <marc.girod@gmail.com>:
>
> If I fork part of my script, there will be two instances sharing the
> same background process.

Well, my suggestion was that given

    sub Nasty::Module::foo {
        do_stuff(@_);
        exec "some", "command";
    }

you could call it like this

    sub My::call_foo {
        my $pid = fork;
        defined $pid or die "can't fork: $!";

        if ($pid) {
            waitpid $pid, 0;
            return $?;
        }
        else {
            Nasty::Module::foo(@_);
        }
    }

The 'waitpid' ensures that you only call one function in Nasty::Module
at a time, and wait for it to exec and for the exec'd process to finish
before returning the status to the caller. It's equivalent to replacing
'exec' with 'system' as you originally suggested: system looks more or
less like

    sub system {
        if (my $pid = fork) {
            waitpit $pid, 0;
            return $?;
        }
        else {
            exec @_;
        }
    }

except with some additional signal handling and so on.

Does this seems a reasonable approach now, or is there reason this is
impossible?

Ben



------------------------------

Date: Thu, 21 Jan 2010 19:46:23 -0500
From: "Uri Guttman" <uri@StemSystems.com>
Subject: Re: macros: return or exit
Message-Id: <87r5pjm0f4.fsf@quad.sysarch.com>

>>>>> "MG" == Marc Girod <marc.girod@gmail.com> writes:

  MG> On Jan 21, 7:33 pm, "Uri Guttman" <u...@StemSystems.com> wrote:
  >> not at all. when you fork, why not pass some flag to tell one of the
  >> procs not to deal with the background process? in the other process,
  >> close off the handles to that background process.

  MG> Not to deal with the background process ?
  MG> But what should it do then ?
  MG> The whole purpose is to interface it !

  MG> It could compute pi decimals, or have dinner.
  MG> Once it has a fork...

i am lost as to the big picture now. i either need to read all the older
emails again or you need to explain your goals (and not your
design). you seem to want to run some binary process and manage its
i/o. why does this need to be in the background? what about a simple
fork of it and manage its i/o in an event loop in the parent? this is
fairly easy and there are modules that do all the hard lifting. if this
design isn't good enough explain why you need a more complex
architecture.

uri

-- 
Uri Guttman  ------  uri@stemsystems.com  --------  http://www.sysarch.com --
-----  Perl Code Review , Architecture, Development, Training, Support ------
---------  Gourmet Hot Cocoa Mix  ----  http://bestfriendscocoa.com ---------


------------------------------

Date: Fri, 22 Jan 2010 00:31:44 -0800 (PST)
From: Marc Girod <marc.girod@gmail.com>
Subject: Re: macros: return or exit
Message-Id: <6efe9d51-cdf0-4c24-92a4-9a950f30e8c1@f12g2000yqn.googlegroups.com>

On Jan 22, 12:46=A0am, "Uri Guttman" <u...@StemSystems.com> wrote:

> i am lost as to the big picture now.

I am not surprised, and I plead guilty.
But I am not writing something from scratch, and I am not going to
redesign anything too drasticly: I play as if there would be users,
and unpublished packages built upon this framework, which has been
public for many years.

So, I did describe my goals, and you did help me.
I appreciate that it is frustrating, after providing useful answers,
and already investing some effort, to be replied RTFM, or "sorry, I
won't disclose more".
It is just that I don't know where to cut: whereever I do, there will
be a next scope. For quite a long time.
Thanks.
Marc


------------------------------

Date: Fri, 22 Jan 2010 00:45:32 -0800 (PST)
From: Marc Girod <marc.girod@gmail.com>
Subject: Re: macros: return or exit
Message-Id: <e17a44ba-81c4-478b-9ae8-5c3c0c12b8ca@21g2000yqj.googlegroups.com>

On Jan 21, 11:29=A0pm, Ben Morrow <b...@morrow.me.uk> wrote:

> Does this seems a reasonable approach now, or is there reason this is
> impossible?

I get it now: there will only be one instance.
However, it still poses some hard problems--although I can see that
you (collective of course) are not short of resources...

I'll have to take care that the pipes get properly transfered to the
child,
so that the communication goes on.
But, then, I maintain a reference count of (objects) clients of the
background server. There may be several per function, and the number
is dynamic. The last one turns the light off (send a 'quit' to the
server).
Well... the child will inherit the current count, and after it
completes, the count should drop back to where it was...?

I cannot turn this suggestion down: it seems valid too.
And maybe better than the first?
Forking is relatively expensive, though? The first should be faster?

Thanks again...
Food to thought. I should try and measure... Work... (No, that wasn't
Yuk!)

Marc


------------------------------

Date: Thu, 21 Jan 2010 22:18:20 +0000 (UTC)
From: Ilya Zakharevich <nospam-abuse@ilyaz.org>
Subject: Re: Modules for PDFs especially tables.
Message-Id: <slrnhlhklc.klk.nospam-abuse@powdermilk.math.berkeley.edu>

On 2010-01-21, Justin C <justin.0911@purestblue.com> wrote:
> Does anyone have any suggestions on how I might proceed? TeX looks like
> it might be the best way forward now, I have Lamport's LaTeX book here
> so can pull together the relevant TeX/LaTeX commands. I suppose that, if
> I can knock up what I want in TeX to start with I won't even need a TeX
> module, I can just use some templating.

[I did not try direct pdflatex, but] keep in mind that relying on
latex+dvips+ps2pdf (needed since sometimes one needs to add pstops to
the mix) turns out to be prohibitive for deployment.

See documentation of typeset_audio_dir (on CPAN) for workarounds
needed for misconfigured machines (in my experience, much more than
half of them are misconfigured).  And a week ago I found a problem
after an upgrade I just have no clue how to workaround...

Hope this helps,
Ilya


------------------------------

Date: Thu, 21 Jan 2010 23:41:37 +0000
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: Modules for PDFs especially tables.
Message-Id: <ha5n27-b512.ln1@osiris.mauzo.dyndns.org>


Quoth Justin C <justin.0911@purestblue.com>:
> I want to produce a PDF containing two tables side by side. Each 51
> rows (including a header) by three columns. Columns 1 and 2 in each 
> table are to contain centred text, and column three is to be
> left-aligned.
> 
> I've been experimenting with PDF::API2, and PDF::Table, but PDF::Table
> doesn't appear to do centred text, and PDF::API2 is hard work - the
> documentation leaves a lot to be desired, for example, surfing the web
> for hints on using PDF::API2 I find references to methods not mentioned
> in the PDF::API2 documentation.
> 
> Does anyone have any suggestions on how I might proceed? TeX looks like
> it might be the best way forward now, I have Lamport's LaTeX book here
> so can pull together the relevant TeX/LaTeX commands. I suppose that, if
> I can knock up what I want in TeX to start with I won't even need a TeX
> module, I can just use some templating.

I've done this sort of thing with pdflatex in the past, with good
results. (This is clpm not ctt, but do you know about xetex that knows
Unicode and can find your system's OpenType fonts without needing to be
told?) For templating I'd start with Template::Simple and move to TT if
it proved necessary.

> I'll probably still need Latex::Driver to get my PDF. 

I just used system, with the usual bit of logic to rerun the appropriate
four and a half thousand times until the formatting stabilised, but L::D
looks like a decent encapsulation of that. (L::D can run makeindex
bibtex/etc. of course, which is rather more than is needed for a
situation like this.)

Ben



------------------------------

Date: Fri, 22 Jan 2010 03:16:51 +0100
From: "Dr.Ruud" <rvtol+usenet@xs4all.nl>
Subject: Re: Modules for PDFs especially tables.
Message-Id: <4b590a93$0$22903$e4fe514c@news.xs4all.nl>

Justin C wrote:

> I want to produce a PDF containing two tables side by side.

http://code.google.com/p/wkhtmltopdf/

(uses WebKit) is really nice.

-- 
Ruud


------------------------------

Date: Fri, 22 Jan 2010 10:51:57 +0200
From: Eric Pozharski <whynot@pozharski.name>
Subject: Re: Modules for PDFs especially tables.
Message-Id: <slrnhlippe.kub.whynot@orphan.zombinet>

with <45d2.4b588503.708ce@zem> Justin C wrote:
*SKIP*
> Does anyone have any suggestions on how I might proceed? TeX looks like
> it might be the best way forward now, I have Lamport's LaTeX book here
> so can pull together the relevant TeX/LaTeX commands. I suppose that, if
> I can knock up what I want in TeX to start with I won't even need a TeX
> module, I can just use some templating.

I'm afraid that Lamport's book is quiet valuable but somewhat outdated.
I'm not about technical side but about options.  In case you have
'TeX Live' at hands (or near) then

	\documentclass{article}
	\usepackage[T2A]{fontenc} % possibly you need something else but 'T2A'
	\usepackage{ucs}          % that's what adds utf8 option for input
	\usepackage[utf8x]{inputenc}
	\usepackage{longtable}

	\begin{document}
	
	\begin{longtable}
	% all the staff here
	\end{longtable}

	\end{document}

'longtable' class has clear documentation (with examples) ('texdoc
longtable').  The 'longtable' class extends a stock environment named
'tabular' (this one doesn't span pages).  And you'll be welcome at ctt
(if you provide minimal example that clearly demonstrates your problem
blah-blah-blah) in case of any problems.

-- 
Torvalds' goal for Linux is very simple: World Domination
Stallman's goal for GNU is even simpler: Freedom


------------------------------

Date: Fri, 22 Jan 2010 02:01:14 -0800 (PST)
From: solaristar <globalsec@hotmail.com>
Subject: need some help excluding with file::find::rule
Message-Id: <d7398cdc-b9c2-4cae-9f39-38d1e3d564e5@j14g2000yqm.googlegroups.com>

(I think I may have posted this msg in the wrong group before, so my
apologies for a double post, i believe this is the right place)

==

First please forgive me if this is the wrong way to go about asking
this question.

I have a script im working on that is looking to only get the
filenames with ".mw.|.cw.|.uw." and exclude any filenames (which
happen to be FQDNs of servers) that do not have that criteria

the structure to search is /data*/backups/$server/daily.0/$server
(where $server would have the .mw.|.cw.|.uw. characteristic)

this is what I have thus far, I dont feel this is the fastest way to
go about doing this (im not sure), I also want to make sure to exclude
and not even "parse" any dirs that dont have the afore mentioned
criteria,

any feedback is appreciated

====

#!/usr/bin/perl

use strict;
use warnings;
use File::Find::Rule;
use File::Basename qw/basename dirname/;

my @data_dir =
  qw { /data/backups };    # list here the data dir if you want to
loop on it.
foreach my $dir (@data_dir) {
print "looking at $dir..\n";
    my ( $bkpcount, $dbcount ) = 0;    # db and backup file counter

    # Gather server name with .mw, .cw, .uw on fqdn
 my %server_w_log;
# This part will search for every  directory with .mw, .uw. cw and
take the base name as key to hash
    opendir( DIR, $dir ) or warn "can't open $dir\n";
    my @servers = readdir(DIR);
    foreach my $server (@servers) {
        next if $server =~ m/^\./;
        %server_w_log =
          map { my $tempfile = basename $_; $tempfile => $_ }
          File::Find::Rule->directory->name(qr/.*\.(mw|uw|cw).*/)
          ->in("$dir/$server/daily.0");

print "server is $server..\n";

    }
    close(DIR);
 ..etc...

(there's more to the script but this is the first part that's giving
me problems.

any help is greatly appreciated.



------------------------------

Date: Fri, 22 Jan 2010 02:13:27 -0600
From: tadmc@seesig.invalid
Subject: Posting Guidelines for comp.lang.perl.misc ($Revision: 1.9 $)
Message-Id: <5-adnYwAvsm6w8TWnZ2dnUVZ_oudnZ2d@giganews.com>

Outline
   Before posting to comp.lang.perl.misc
      Must
       - Check the Perl Frequently Asked Questions (FAQ)
       - Check the other standard Perl docs (*.pod)
      Really Really Should
       - Lurk for a while before posting
       - Search a Usenet archive
      If You Like
       - Check Other Resources
   Posting to comp.lang.perl.misc
      Is there a better place to ask your question?
       - Question should be about Perl, not about the application area
      How to participate (post) in the clpmisc community
       - Carefully choose the contents of your Subject header
       - Use an effective followup style
       - Speak Perl rather than English, when possible
       - Ask perl to help you
       - Do not re-type Perl code
       - Provide enough information
       - Do not provide too much information
       - Do not post binaries, HTML, or MIME
      Social faux pas to avoid
       - Asking a Frequently Asked Question
       - Asking a question easily answered by a cursory doc search
       - Asking for emailed answers
       - Beware of saying "doesn't work"
       - Sending a "stealth" Cc copy
      Be extra cautious when you get upset
       - Count to ten before composing a followup when you are upset
       - Count to ten after composing and before posting when you are upset
-----------------------------------------------------------------

Posting Guidelines for comp.lang.perl.misc ($Revision: 1.9 $)
    This newsgroup, commonly called clpmisc, is a technical newsgroup
    intended to be used for discussion of Perl related issues (except job
    postings), whether it be comments or questions.

    As you would expect, clpmisc discussions are usually very technical in
    nature and there are conventions for conduct in technical newsgroups
    going somewhat beyond those in non-technical newsgroups.

    The article at:

        http://www.catb.org/~esr/faqs/smart-questions.html

    describes how to get answers from technical people in general.

    This article describes things that you should, and should not, do to
    increase your chances of getting an answer to your Perl question. It is
    available in POD, HTML and plain text formats at:

     http://www.rehabitation.com/clpmisc.shtml

    For more information about netiquette in general, see the "Netiquette
    Guidelines" at:

     http://andrew2.andrew.cmu.edu/rfc/rfc1855.html

    A note to newsgroup "regulars":

       Do not use these guidelines as a "license to flame" or other
       meanness. It is possible that a poster is unaware of things
       discussed here.  Give them the benefit of the doubt, and just
       help them learn how to post, rather than assume that they do 
       know and are being the "bad kind" of Lazy.

    A note about technical terms used here:

       In this document, we use words like "must" and "should" as
       they're used in technical conversation (such as you will
       encounter in this newsgroup). When we say that you *must* do
       something, we mean that if you don't do that something, then
       it's unlikely that you will benefit much from this group.
       We're not bossing you around; we're making the point without
       lots of words.

    Do *NOT* send email to the maintainer of these guidelines. It will be
    discarded unread. The guidelines belong to the newsgroup so all
    discussion should appear in the newsgroup. I am just the secretary that
    writes down the consensus of the group.

Before posting to comp.lang.perl.misc
  Must
    This section describes things that you *must* do before posting to
    clpmisc, in order to maximize your chances of getting meaningful replies
    to your inquiry and to avoid getting flamed for being lazy and trying to
    have others do your work.

    The perl distribution includes documentation that is copied to your hard
    drive when you install perl. Also installed is a program for looking
    things up in that (and other) documentation named 'perldoc'.

    You should either find out where the docs got installed on your system,
    or use perldoc to find them for you. Type "perldoc perldoc" to learn how
    to use perldoc itself. Type "perldoc perl" to start reading Perl's
    standard documentation.

    Check the Perl Frequently Asked Questions (FAQ)
        Checking the FAQ before posting is required in Big 8 newsgroups in
        general, there is nothing clpmisc-specific about this requirement.
        You are expected to do this in nearly all newsgroups.

        You can use the "-q" switch with perldoc to do a word search of the
        questions in the Perl FAQs.

    Check the other standard Perl docs (*.pod)
        The perl distribution comes with much more documentation than is
        available for most other newsgroups, so in clpmisc you should also
        see if you can find an answer in the other (non-FAQ) standard docs
        before posting.

    It is *not* required, or even expected, that you actually *read* all of
    Perl's standard docs, only that you spend a few minutes searching them
    before posting.

    Try doing a word-search in the standard docs for some words/phrases
    taken from your problem statement or from your very carefully worded
    "Subject:" header.

  Really Really Should
    This section describes things that you *really should* do before posting
    to clpmisc.

    Lurk for a while before posting
        This is very important and expected in all newsgroups. Lurking means
        to monitor a newsgroup for a period to become familiar with local
        customs. Each newsgroup has specific customs and rituals. Knowing
        these before you participate will help avoid embarrassing social
        situations. Consider yourself to be a foreigner at first!

    Search a Usenet archive
        There are tens of thousands of Perl programmers. It is very likely
        that your question has already been asked (and answered). See if you
        can find where it has already been answered.

        One such searchable archive is:

         http://groups.google.com/advanced_search

  If You Like
    This section describes things that you *can* do before posting to
    clpmisc.

    Check Other Resources
        You may want to check in books or on web sites to see if you can
        find the answer to your question.

        But you need to consider the source of such information: there are a
        lot of very poor Perl books and web sites, and several good ones
        too, of course.

Posting to comp.lang.perl.misc
    There can be 200 messages in clpmisc in a single day. Nobody is going to
    read every article. They must decide somehow which articles they are
    going to read, and which they will skip.

    Your post is in competition with 199 other posts. You need to "win"
    before a person who can help you will even read your question.

    These sections describe how you can help keep your article from being
    one of the "skipped" ones.

  Is there a better place to ask your question?
    Question should be about Perl, not about the application area
        It can be difficult to separate out where your problem really is,
        but you should make a conscious effort to post to the most
        applicable newsgroup. That is, after all, where you are the most
        likely to find the people who know how to answer your question.

        Being able to "partition" a problem is an essential skill for
        effectively troubleshooting programming problems. If you don't get
        that right, you end up looking for answers in the wrong places.

        It should be understood that you may not know that the root of your
        problem is not Perl-related (the two most frequent ones are CGI and
        Operating System related), so off-topic postings will happen from
        time to time. Be gracious when someone helps you find a better place
        to ask your question by pointing you to a more applicable newsgroup.

  How to participate (post) in the clpmisc community
    Carefully choose the contents of your Subject header
        You have 40 precious characters of Subject to win out and be one of
        the posts that gets read. Don't waste them. Take care while
        composing them, they are the key that opens the door to getting an
        answer.

        Spend them indicating what aspect of Perl others will find if they
        should decide to read your article.

        Do not spend them indicating "experience level" (guru, newbie...).

        Do not spend them pleading (please read, urgent, help!...).

        Do not spend them on non-Subjects (Perl question, one-word
        Subject...)

        For more information on choosing a Subject see "Choosing Good
        Subject Lines":

         http://www.cpan.org/authors/id/D/DM/DMR/subjects.post

        Part of the beauty of newsgroup dynamics, is that you can contribute
        to the community with your very first post! If your choice of
        Subject leads a fellow Perler to find the thread you are starting,
        then even asking a question helps us all.

    Use an effective followup style
        When composing a followup, quote only enough text to establish the
        context for the comments that you will add. Always indicate who
        wrote the quoted material. Never quote an entire article. Never
        quote a .signature (unless that is what you are commenting on).

        Intersperse your comments *following* each section of quoted text to
        which they relate. Unappreciated followup styles are referred to as
        "top-posting", "Jeopardy" (because the answer comes before the
        question), or "TOFU" (Text Over, Fullquote Under).

        Reversing the chronology of the dialog makes it much harder to
        understand (some folks won't even read it if written in that style).
        For more information on quoting style, see:

         http://web.presby.edu/~nnqadmin/nnq/nquote.html

    Speak Perl rather than English, when possible
        Perl is much more precise than natural language. Saying it in Perl
        instead will avoid misunderstanding your question or problem.

        Do not say: I have variable with "foo\tbar" in it.

        Instead say: I have $var = "foo\tbar", or I have $var = 'foo\tbar',
        or I have $var = <DATA> (and show the data line).

    Ask perl to help you
        You can ask perl itself to help you find common programming mistakes
        by doing two things: enable warnings (perldoc warnings) and enable
        "strict"ures (perldoc strict).

        You should not bother the hundreds/thousands of readers of the
        newsgroup without first seeing if a machine can help you find your
        problem. It is demeaning to be asked to do the work of a machine. It
        will annoy the readers of your article.

        You can look up any of the messages that perl might issue to find
        out what the message means and how to resolve the potential mistake
        (perldoc perldiag). If you would like perl to look them up for you,
        you can put "use diagnostics;" near the top of your program.

    Do not re-type Perl code
        Use copy/paste or your editor's "import" function rather than
        attempting to type in your code. If you make a typo you will get
        followups about your typos instead of about the question you are
        trying to get answered.

    Provide enough information
        If you do the things in this item, you will have an Extremely Good
        chance of getting people to try and help you with your problem!
        These features are a really big bonus toward your question winning
        out over all of the other posts that you are competing with.

        First make a short (less than 20-30 lines) and *complete* program
        that illustrates the problem you are having. People should be able
        to run your program by copy/pasting the code from your article. (You
        will find that doing this step very often reveals your problem
        directly. Leading to an answer much more quickly and reliably than
        posting to Usenet.)

        Describe *precisely* the input to your program. Also provide example
        input data for your program. If you need to show file input, use the
        __DATA__ token (perldata.pod) to provide the file contents inside of
        your Perl program.

        Show the output (including the verbatim text of any messages) of
        your program.

        Describe how you want the output to be different from what you are
        getting.

        If you have no idea at all of how to code up your situation, be sure
        to at least describe the 2 things that you *do* know: input and
        desired output.

    Do not provide too much information
        Do not just post your entire program for debugging. Most especially
        do not post someone *else's* entire program.

    Do not post binaries, HTML, or MIME
        clpmisc is a text only newsgroup. If you have images or binaries
        that explain your question, put them in a publically accessible
        place (like a Web server) and provide a pointer to that location. If
        you include code, cut and paste it directly in the message body.
        Don't attach anything to the message. Don't post vcards or HTML.
        Many people (and even some Usenet servers) will automatically filter
        out such messages. Many people will not be able to easily read your
        post. Plain text is something everyone can read.

  Social faux pas to avoid
    The first two below are symptoms of lots of FAQ asking here in clpmisc.
    It happens so often that folks will assume that it is happening yet
    again. If you have looked but not found, or found but didn't understand
    the docs, say so in your article.

    Asking a Frequently Asked Question
        It should be understood that you may have missed the applicable FAQ
        when you checked, which is not a big deal. But if the Frequently
        Asked Question is worded similar to your question, folks will assume
        that you did not look at all. Don't become indignant at pointers to
        the FAQ, particularly if it solves your problem.

    Asking a question easily answered by a cursory doc search
        If folks think you have not even tried the obvious step of reading
        the docs applicable to your problem, they are likely to become
        annoyed.

        If you are flamed for not checking when you *did* check, then just
        shrug it off (and take the answer that you got).

    Asking for emailed answers
        Emailed answers benefit one person. Posted answers benefit the
        entire community. If folks can take the time to answer your
        question, then you can take the time to go get the answer in the
        same place where you asked the question.

        It is OK to ask for a *copy* of the answer to be emailed, but many
        will ignore such requests anyway. If you munge your address, you
        should never expect (or ask) to get email in response to a Usenet
        post.

        Ask the question here, get the answer here (maybe).

    Beware of saying "doesn't work"
        This is a "red flag" phrase. If you find yourself writing that,
        pause and see if you can't describe what is not working without
        saying "doesn't work". That is, describe how it is not what you
        want.

    Sending a "stealth" Cc copy
        A "stealth Cc" is when you both email and post a reply without
        indicating *in the body* that you are doing so.

  Be extra cautious when you get upset
    Count to ten before composing a followup when you are upset
        This is recommended in all Usenet newsgroups. Here in clpmisc, most
        flaming sub-threads are not about any feature of Perl at all! They
        are most often for what was seen as a breach of netiquette. If you
        have lurked for a bit, then you will know what is expected and won't
        make such posts in the first place.

        But if you get upset, wait a while before writing your followup. I
        recommend waiting at least 30 minutes.

    Count to ten after composing and before posting when you are upset
        After you have written your followup, wait *another* 30 minutes
        before committing yourself by posting it. You cannot take it back
        once it has been said.

AUTHOR
    Tad McClellan and many others on the comp.lang.perl.misc newsgroup.

-- 
Tad McClellan
email: perl -le "print scalar reverse qq/moc.liamg\100cm.j.dat/"


------------------------------

Date: Thu, 21 Jan 2010 23:31:51 +0000
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: Strip control characters in a file
Message-Id: <7o4n27-b512.ln1@osiris.mauzo.dyndns.org>


Quoth Marc Girod <marc.girod@gmail.com>:
> On Jan 21, 9:28 am, "Uri Guttman" <u...@StemSystems.com> wrote:
> 
> > use tr///. untested (need to check the chars):
> 
> > perl -pi2 -e 'tr/0x00-0x090x11-0x1f//d'
> 
> Thanks Uri.
> I couldn't make tr work with hexadecimal...
> But it groked octal very nicely:
> 
> perl -pi2 -e 'tr/\000-\011\013-\037\177//d'

Try /\x00/ rather than /0x00/.

Ben



------------------------------

Date: 6 Apr 2001 21:33:47 GMT (Last modified)
From: Perl-Users-Request@ruby.oce.orst.edu (Perl-Users-Digest Admin) 
Subject: Digest Administrivia (Last modified: 6 Apr 01)
Message-Id: <null>


Administrivia:

To submit articles to comp.lang.perl.announce, send your article to
clpa@perl.com.

Back issues are available via anonymous ftp from
ftp://cil-www.oce.orst.edu/pub/perl/old-digests. 

#For other requests pertaining to the digest, send mail to
#perl-users-request@ruby.oce.orst.edu. Do not waste your time or mine
#sending perl questions to the -request address, I don't have time to
#answer them even if I did know the answer.


------------------------------
End of Perl-Users Digest V11 Issue 2782
***************************************


home help back first fref pref prev next nref lref last post