Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked

create gagillian files in current directory

by jonagondos (Novice)
on Dec 11, 2012 at 07:47 UTC ( #1008229=CUFP: print w/replies, xml ) Need Help??

hi this script creates a gagillian files in your current directory and reverses a file, enjoy lol.

#!/usr/bin/Perl if (@ARGV != 1) { print "usage ./ file1\n"; print "@ARGV"; exit; } else { $file1 = pop(@ARGV); open(FILE1,$file1); @array1 = <FILE1>; foreach (@array1) { $each = reverse($_); print "$each\n" } print "what would you like your file name to be?\n"; $filename = <STDIN>; chomp ($filename); if (($filename eq "") || (defined $filename eq 'false')) { print "enter some data!"; exit; } else { sub hellofile { print "$_[0] is the file to be written"; open (FILE, "> $_[0]") or die "cant create file"; } $i == 0; while ($i < 1000000000000000000000) { hellofile($filename); $filename .= poop; $i++; } } }

Replies are listed 'Best First'.
Re: create gagillian files in current directory
by MidLifeXis (Monsignor) on Dec 11, 2012 at 13:48 UTC

    Just a few comments focused on your code (in other words, don't take it personally).

    Under many (most?) filesystems, once the number of files in a directory reaches a certain point, filesystem code starts to melt down.

    There is also a limit on many filesystems for the length of a file name. Once you append the string 'poop' to a filename a few times (60ish, if your limit happens to be around 240), you will run into this limit.

    $i == 0; does not do what you think it does.

    I would recommend that you use strict; use warnings; at the top of your code. While not required, it can help to catch some common mistakes.

    Are the two parts of your code related? It seems that the part before the user prompt is unrelated to the part after the prompt. Ideally, unrelated code should be broken into different units of concern (scripts, modules, subroutines, etc).

    The sub hellofile within the else block does not do what it appears you think it does. The sub will be defined even if the else block does not get executed. sub declarations are not nested, and even if nested in other blocks, will be globally visible.

    The indentation could use some work. The nesting does not make it easy to read.

    Update (2012/12/12): Minor grammar tweaks.


Re: create gagillian files in current directory
by jwkrahn (Monsignor) on Dec 11, 2012 at 11:48 UTC

    perl (and *nix) are case sensitive so that is usually spelled:



    You should verify that the file opened correctly:

    open FILE1, '<', $file1 or die "Cannot open '$file1' because: $!";

    if (($filename eq "") || (defined $filename eq 'false')) {

    defined $filename will never be eq to the string 'false'

Re: create gagillian files in current directory
by Plankton (Vicar) on Dec 14, 2012 at 20:34 UTC

    This reminds me of a bad Bush joke.

    During the 2nd Gulf War, Chenny comes into the Oval Office and says to Bush, "2 Brazilian solders where killed yesterday".

    Bush puts his head in his hands and say "Oh My GOD!!!, How many is Brazilian?"

Re: create gagillian files in current directory
by Anonymous Monk on Dec 11, 2012 at 07:53 UTC

      I've moved this from SoPW to CUFP.

      perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

        Because creating a gazillion files in my current directory is cool?



Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: CUFP [id://1008229]
Approved by tobyink
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (3)
As of 2018-03-19 05:43 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (232 votes). Check out past polls.