Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: Limited Number of User Input

by graff (Chancellor)
on Mar 22, 2013 at 04:13 UTC ( #1024866=note: print w/replies, xml ) Need Help??

in reply to Limited Number of User Input

It would appear that this script is intended to be used interactively in a command-line shell. In that context, the typical approach for getting a list of file names from the user is to have the user provide the names on the command line, so that the script gets the list as @ARGV.

Every shell ever invented supports wildcard characters as a shortcut for specifying sets of file names on a command line, and every decent shell also provides tab completion of file names, so it's a lot easier for the user to supply file names on the command line when running the script. The user doesn't need to answer a question about how many files will be specified, and doesn't need to worry about typing mistakes while the script is running.

None of the snippets in the OP are necessary if the script can be run from the command-line prompt like this: *.foo # (matches all files with a ".foo" extension" #or: this_long_name.txt that_other_long_name.xml # where hitting <tab> after "thi" and "tha" completes each name automa +tically
Then the script just looks at @ARGV to know how many files were given, and what their names are:
#!/usr/bin/perl ... printf "There were %d files mentioned on the command line:\n", scalar +@ARGV; print join "\n", @ARGV, ''; ...

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1024866]
[Discipulus]: i invented also 'gired'
[Lady_Aleena]: Discipulus, then that is a problem. I wanted to find total seconds of my entire .mp3 collection to do some math on it to see how many days of continuous music i have.
[LanX]: darn. .. I wanted to see Marine and Melonchon go to next round, just for fun xD
[Discipulus]: LA use Perl: traversing a dir tree is simple; foreach file mp3 $sec+= use Mp3::Info
[Lady_Aleena]: Discipulus, I was able to get the sum of the seconds on the command line using awk. Then I ran the result through a perl script and got the result. It came bach with 4 days, 9 hours, 56 minutes, 43 seconds.
[Lady_Aleena]: s/bach/back/;
[Discipulus]: gired anyway is the intermediate state between hired and fired (and vice versa;)
[Lady_Aleena]: Discipuluis, I don't know if I want to fight with File::Find. File::Find and I are not friends.
[Discipulus]: 4 day Bach is too muche even for me
[Discipulus]: LA you know who is paco?

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (9)
As of 2017-04-23 20:32 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (432 votes). Check out past polls.