Increment a string and write it to a file after each result.

J

john brown

This script receives input from the command line. I put in for
example "www.musicdownload.com/song1.mp3". The script looks for the
".mp3" extension and increments the preceeding number to 10. This
works fine, printing the result to the screen. As you can see, I
would like to write the results to a file called "wget_input". Wget
reads from this file and the songs are retrieved. The problem I have
is with writing all of the results to the file, in this
case/www.musicdownload.com/song10.mp3" gets written to the file only.
I know it must be incremented and written after each result, but I
don't know how to go about constructing the loop. Any ideas?



#! /usr/bin/perl -w
#
# mp3_search
#

print "Input path to video archive\n";
$stdinput = <STDIN> ;
chomp ($stdinput);
$path = "$stdinput";

$count = substr ($path, rindex ($path, ".mp3") - 1, 1);

for ($count .. 10)
{ substr ($path, rindex ($path, ".") - 1, 1, $count++); print
"$path\n"; }

open (OUTPUTFILE,">wget_input")|| die "Failed to open
wget_input\n";

printf OUTPUTFILE "$path";

close OUTPUTFILE;
 
J

J. Gleixner

john said:
This script receives input from the command line. I put in for
example "www.musicdownload.com/song1.mp3". The script looks for the
".mp3" extension and increments the preceeding number to 10. This
works fine, printing the result to the screen. As you can see, I
would like to write the results to a file called "wget_input". Wget
reads from this file and the songs are retrieved. The problem I have
is with writing all of the results to the file, in this
case/www.musicdownload.com/song10.mp3" gets written to the file only.
I know it must be incremented and written after each result, but I
don't know how to go about constructing the loop. Any ideas?



#! /usr/bin/perl -w
#
# mp3_search
#

print "Input path to video archive\n";
$stdinput = <STDIN> ;
chomp ($stdinput);
$path = "$stdinput";

$count = substr ($path, rindex ($path, ".mp3") - 1, 1);

for ($count .. 10)
{ substr ($path, rindex ($path, ".") - 1, 1, $count++); print
"$path\n"; }

open (OUTPUTFILE,">wget_input")|| die "Failed to open
wget_input\n";

printf OUTPUTFILE "$path";

close OUTPUTFILE;

In place of printing it to the screen, print it to your OUTPUTFILE in
your loop. Using your code, that'd be something like:

open (OUTPUTFILE,">wget_input")|| die "Failed to open wget_input: $!\n";
#include reason
for ($count .. 10)
{
substr ($path, rindex ($path, ".") - 1, 1, $count++);
print OUTPUTFILE "$path\n";
}
close (OUTPUTFILE);

I'd probably get the path, up to the integer, and then just print it and
forget about the multiple calls to substr, or do the index once, and
store it before the for loop.

for ($count .. 10)
{
print OUTPUTFILE $new_path, $count++, ".mp3\n";
}
 
J

john brown

J. Gleixner said:
In place of printing it to the screen, print it to your OUTPUTFILE in
your loop. Using your code, that'd be something like:

open (OUTPUTFILE,">wget_input")|| die "Failed to open wget_input: $!\n";
#include reason
for ($count .. 10)
{
substr ($path, rindex ($path, ".") - 1, 1, $count++);
print OUTPUTFILE "$path\n";
}
close (OUTPUTFILE);

I'd probably get the path, up to the integer, and then just print it and
forget about the multiple calls to substr, or do the index once, and
store it before the for loop.

for ($count .. 10)
{
print OUTPUTFILE $new_path, $count++, ".mp3\n";
}


Thanks for the help. Works like a charm.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,522
Members
44,995
Latest member
PinupduzSap

Latest Threads

Top