On Mon, Jan 25, 2010 at 12:30 PM, Ashish Verma <[email protected]> wrote:
> If user has stored his options in a file, then the code should open that
> file, pick the values and assign them to variable names stored in the array
> @vrvariables.
> *Basically the variables should get assigned from either user input, or from
> a stored file.*

> my @myvariables = ('url','realm','username','password','proxy','cookies');
> *my @vrvariables =
> ('$url','$realm','$username','$password','$proxy','$cookies'); # THESE ARE
> THE STORED VARIABLE NAMES*

Something wrong in the above line.

Why would you want to do

$vrvariable[0] = '$url';

$vrvariable[1] = '$realm';

Can't you find a better way?

Anyway see below.

> my $varcount = @myvariables;
> my $ac = 0;
> my $store_file = 'files-dash/cds.html';
> sub grab_input
> {
>        print "Store choice made (Y/N): "; chomp(my $choice = <STDIN>);
>        print "URL to access          : "; chomp(my $url = <STDIN>);
> chomp(my $url_credentials = `echo $url | cut -d "/" -f3`);
>        print "Realm (If required)    : "; chomp(my $realm = <STDIN>);
>        print "Username (If required) : "; chomp(my $username = <STDIN>);
>        system(`stty -echo`);
>        print "Password               : "; chomp(my $password = <STDIN>);
>        system(`stty echo`);
>        print "\n";
>        print "Proxy server           : "; chomp(my $proxy = <STDIN>);
>        print "Cookies File to use    : "; chomp(my $cookies = <STDIN>);

You can replace all <STDIN> with <>.

Default is that. ;)

>        if($choice eq "Y" || "y")
>        {
>        my %credentials_store = ( url => $url, realm => $realm, username =>
> $username, password => $password, proxy => $proxy, cookies => $cookies );
>        open(STORE, ">store.txt");
>        my $i = 0;
>        foreach(%credentials_store)
>                {
>                        while ($i < $varcount)
>                                {
>                                        print STORE
> $credentials_store{"$myvariables[$i]"}, "\n";
>                                        $i++;
>                                }
>                }
>        }
> }

Is the above code printing correctly?

You did not mention that.

> sub make_input_global
> {
>        `cp store.txt temp.txt`;

You could use File::Copy module instead.

>        open(MKGLB, "<temp.txt");
>        my $i = 0;
>        while ($stored_var = <MKGLB>)
>                                {
> *                                        "$vrvariables[$i]" = $stored_var;
> #THIS IS NOT WORKING
> *                                        $i++;
>                                }
>        #`rm -f temp.txt`;
> }

This is a weird way to assign variables from a file.

Do you want to store each variable in a line?

Have you tried

$ cat temp.txt

and found out what it contains?

I think you are not using the perl idioms correctly. Perl eases program
development in a big way though the advanced skills come only with
experience.

But overall there are many simple ways to achieve complex tasks in perl.

-Girish
-- 
Gayatri Hitech
web: http://gayatri-hitech.com

SpamCheetah Spam filter:
http://spam-cheetah.com
_______________________________________________
ILUGC Mailing List:
http://www.ae.iitm.ac.in/mailman/listinfo/ilugc

Reply via email to