Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??

I personally believe that shell scripts should be written in shell, and Perl scripts in perl. Now, the distinction is not always clear, and there are corner cases, but yours is well close to the first category, to say the least: in fact someone suggested you inside-out solutions, namely, instead of a Perl program running find(1) a find(1) command running perl, and perl may be substituted with sed(1) there.


You're missing the single two most important lines for your program:

use strict; use warnings;

Others would add diagnostics to the list, but I regard it as "something more" whereas the former two are the very strictly close to fundamental, and I would only avoid them in onliners and in the simplest scripts.

chomp @logging; print @logging;

Do you really want to print them like that? It will look awful!

open (FILE,"<$prop");

Here and for the rest of your program, do a favour to yourself and use the three args form of open, possibly along with "lexical handles" (which will dispense you from the need of explicit close's) and most importantly, checking for success. If you're lazy and don't want to check individual open()'s, then you can use Fatal instead.

foreach (@array) { print @array;

Do you really want to print the same string for each element of @array? (What an awful name for a variable, BTW: it's neither descriptive nor short enough to be used instead of a descriptive one...) Sorry: I now see it won't print "the same string" for all elements, but indeed it is so strange a logic that got me confused, and this is the reason why I stroke the text before rather than simply deleting it. Anyway, clarity is in the eye of the beholder, they say...

$_ =~ s/DEBUG_MIN/WARN/g; }

This is a specific idiodincrasy of mine: while perfectly valid Perl, it doesn't make much sense in that you should either take full advantage of $_ being a pronoun, and the topicalizer, thus used implicitly and by default by many functions and operators or use the binding operator =~ on a generic variable.

@disable='find . -name';

Here, you're thinking of using the backticks as above, but you made a typo. In absence of the checks that I and others, suggested you, you won't even notice. Which is the reason why we suggested you to do them in the first place.

foreach $props (@disable) { open (FILE, ">> $props"); @array1=<FILE>;

This is the most serious error you've made thus far. You're opening a file for appending and then you're attempting to read from it.

All in all, if I understand the logic you're after from your broken code, I presume you may be interested in the -i cli switch, or in the ^I special variable, or in reproducing their effects "manually," which you don't, as of now. So no surprise "it doesn't work:" you can't expect the effect of a s/// to propagate to a file only because you read the variable you're applying it to from that particular file.

If you can't understand the incipit, then please check the IPB Campaign.

In reply to Re^2: Open Files in Unix by blazar
in thread Open Files in Unix by swartzieee

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    and all is quiet...

    How do I use this? | Other CB clients
    Other Users?
    Others contemplating the Monastery: (6)
    As of 2018-05-24 16:01 GMT
    Find Nodes?
      Voting Booth?