472,127 Members | 2,102 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,127 software developers and data experts.

Array initialization

I am trying to save the intermediate result in an array which I am accessing in every loop of a while loop.
Following is the part of the code:

my @array_mac=();
my $index1=0;
#print "$array_mac_sz\n";
if ($array_mac_sz > 0){
while ($index1 < $array_mac_sz) {
if ($array_mac[$index1] eq "$hardware" ) {

if ($flag4 == 0){
} else {

I am getting a warning for the statement is Bold saying
"Use of uninitialized value in string eq at search_IP_05.plx line"

Is this a serious warning. What can I possibly do to get rid of it.
What I am trying to do in this code is: save the new hardware address only if it is not already present in the array. I am sure there is a better way to do the same. I was wondering if anyone could guide me on those lines.

Thanks a lot
Feb 12 '07 #1
6 9455
Found the mistake in my code and got rid of the warning. There is a new problem I am facing now:

@array_mac contains just one mac address.
When I type $array_size=$array_mac
I expected that
$array_size = 1
I am getting $array_size=2. Why is that happening?
Please help.
Feb 12 '07 #2
4,059 Expert 2GB
I assume you meant:

Expand|Select|Wrap|Line Numbers
  1. $array_size = @array_mac;
if the return value is 2 when you believe it should be 1 (one) print the array and see whats in it:

Expand|Select|Wrap|Line Numbers
  1. print "value='$_'\n" for @array_mac;
Feb 12 '07 #3

What you are trying to do is the following:
Expand|Select|Wrap|Line Numbers
  1. @list_1 = ( "a", "b", "c", "d" );
  2. @list_2 = ( "b", "hardware", "c" );
  4. sub addToArr {
  5.   my($arrRef, $str) = @_;
  7.   if ( ! grep(/$str/, @$arrRef) ) {
  8.     push(@$arrRef, $str);
  9.   }
  10. }
  12. addToArr(\@list_1, "hardware");
  13. addToArr(\@list_2, "hardware");
  15. printf("%s\n", join(", ", @list_1));
  16. printf("%s\n", join(", ", @list_2));

Greetz, Doc
Feb 14 '07 #4
I have a question.

I know that I can initialize an array:
@array = ("foo","bar");

I have a variable $var that equals ("foo","bar"); and I want to turn that into an array. @array = $var doesn't do it.

regards and thanx,

Feb 21 '07 #5
OK, I just found 'split'. neat!

Feb 21 '07 #6
OK, I just found 'split'. neat!

Another approach would be:
Expand|Select|Wrap|Line Numbers
  1. $var = '( "foo", "bar" )';
  2. @arr = $var =~ m/"(.*?)"/g;
  4. map { print $_ . "\n" } @arr;
Greetz, Doc
Feb 21 '07 #7

Post your reply

Sign in to post your reply or Sign up for a free account.

Similar topics

2 posts views Thread by Fred Zwarts | last post: by
13 posts views Thread by simondex | last post: by
19 posts views Thread by Henry | last post: by
8 posts views Thread by Peter B. Steiger | last post: by
15 posts views Thread by Charles Sullivan | last post: by
3 posts views Thread by kk_oop | last post: by
5 posts views Thread by toton | last post: by
15 posts views Thread by jamx | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.