CGI/Perl Guide | Learning Center | Forums | Advertise | Login
Site Search: in

  Main Index MAIN
INDEX
Search Posts SEARCH
POSTS
Who's Online WHO'S
ONLINE
Log in LOG
IN

Home: Perl Programming Help: Advanced:
An array question.

 



perlkid
stranger

Sep 19, 2000, 12:50 AM

Post #1 of 5 (2691 views)
An array question. Can't Post

 
Ok this is confusing,

Here is what I need to do,

I have an array, I put my data in the array by doing this,

<BLOCKQUOTE><font size="1" face="Arial,Helvetica,sans serif">code:</font><HR>


push(@alts, ucfirst($in{'0'}), $in{'url'});
push(@alts, ucfirst($in{'1'}), $in{'1url'});
push(@alts, ucfirst($in{'2'}), $in{'2url'});
push(@alts, ucfirst($in{'3'}), $in{'3url'});
push(@alts, ucfirst($in{'4'}), $in{'4url'});
push(@alts, ucfirst($in{'5'}), $in{'5url'});
push(@alts, ucfirst($in{'6'}), $in{'6url'});
push(@alts, ucfirst($in{'7'}), $in{'7url'});
push(@alts, ucfirst($in{'8'}), $in{'8url'});
push(@alts, ucfirst($in{'9'}), $in{'9url'});

....

until $in{'url50'}
</pre><HR></BLOCKQUOTE>

Now I need to loop through the data and preform a regex on the $in{'9url'} part, but not the $in{'9'}. Basically, How do I handle the data in column 2 differently than in column one. Then print out the data. I got the printint part down.

This is hard for me to even explain. Do you see what I'm trying to do here?

I'll give an example.

The url is "http://www.site.com" and the link is called "click here"

I would loop through the data and add the string "http://www.mysite.com/redir.pl?url=" before the url. As for the link name I would just print it as is.

Now can you picture what I'm trying to do?

It's not exactly what I need to do but it's a good example. What I'm really doing is very much more confusing and that's why I used an example different than what I'm doing.

I hope you can help me out,

Is this a multidimensional array that I'm talking about?

Thanks,

perlkid


perlkid
stranger

Sep 18, 2000, 10:57 PM

Post #2 of 5 (2691 views)
Re: An array question. [In reply to] Can't Post

 
Thanks Kanji,

I would have never though of skipping all the even numbers.

Thanks A lot, Smile Smile

perlkid


Kanji
User / Moderator

Sep 19, 2000, 5:54 AM

Post #3 of 5 (2691 views)
Re: An array question. [In reply to] Can't Post

<BLOCKQUOTE><font size="1" face="Arial,Helvetica,sans serif">code:</font><HR>

for $idx ( 0 .. $#alts ) {
next unless $idx % 2; # skips odd indexes
$alts[$idx] = "http://.../?$alts[$idx]";
}</pre><HR></BLOCKQUOTE>

... and, no, that's not a multi-dimensional array which would look more like ...

<BLOCKQUOTE><font size="1" face="Arial,Helvetica,sans serif">code:</font><HR>

push @alts, [ $in{"0"}, $in{"url"} ];
for $url ( @alts ) {
# $url is an array ref
# ->[1] is its second element
$url->[1] = "http://.../?$url->[1]";
}</pre><HR></BLOCKQUOTE>


Kanji
User / Moderator

Sep 19, 2000, 11:39 AM

Post #4 of 5 (2691 views)
Re: An array question. [In reply to] Can't Post

You can also save yourself by adding it in at generation time ...

<BLOCKQUOTE><font size="1" face="Arial,Helvetica,sans serif">code:</font><HR>

push(@alts, ucfirst($in{'0'}), "http://.../?url=$in{'url'}" );</pre><HR></BLOCKQUOTE>

Not sure why you're not doing it that way. Are you really doing 50 odd push() statements?

If so, you can make a (hopefully) minor change to your script and vastly simplify the process with the added benefit of easy-scaling if you decide to add or remove URLs.

<BLOCKQUOTE><font size="1" face="Arial,Helvetica,sans serif">code:</font><HR>

for my $no ( 0 .. 50 ) {
push @alts,
ucfirst( $in{$no} ),
qq(http://.../?url=$in{"${no}url"});
}</pre><HR></BLOCKQUOTE>

The change, if you can't see it, is making $in{'url'} be $in{'0url'} so you have consistency (which makes it easy to manipulate).


[This message has been edited by Kanji (edited 09-19-2000).]


perlkid
stranger

Sep 22, 2000, 10:09 AM

Post #5 of 5 (2691 views)
Re: An array question. [In reply to] Can't Post

 
Thanks A lot for that code Kanji,

I learned a lot from that second peice of code. It also worked like a charm. It's a lot faster now that I'm not pushing all 50 of them one at a time.

Thanks,

perlkid

 
 


Search for (options) Powered by Gossamer Forum v.1.2.0

Web Applications & Managed Hosting Powered by Gossamer Threads
Visit our Mailing List Archives