Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: compare 2 arrays for intersect diff and commmon values

by kcott (Archbishop)
on Mar 25, 2014 at 04:43 UTC ( [id://1079633]=note: print w/replies, xml ) Need Help??


in reply to compare 2 arrays for intersect diff and commmon values

G'day rasgolla,

Welcome to the monastery.

"I am getting output as ..."

Please show actual output between <code>...</code> tags. That way we can see exactly what you're seeing.

Please also show expected output (again, between <code>...</code> tags). Then we can see the difference between what you got and what you were trying to get.

From what you've posted, if

DEBUG( "DEBUG: - difference links values $difference[0] " );

is producing

DEBUG: - difference links values ARRAY(0x34276a0)

but you actually wanted something like

DEBUG: - difference links values val1 val2 ... valN

then you'll need to dereference the $difference[0] arrayref:

DEBUG( "DEBUG: - difference links values @{$difference[0]} " );

That possibly raises a few questions, most of which may be answered by "Perl references short introduction".

If you have further questions, please follow the guidelines in "How do I post a question effectively?". Also, using a logical indentation, will make your code more readable for both you and us: that equates to less errors by you and, for us, a greater inclination to actually read your code.

-- Ken

Replies are listed 'Best First'.
Re^2: compare 2 arrays for intersect diff and commmon values
by rasgolla (Initiate) on Mar 25, 2014 at 05:31 UTC
    Thanks for the response Ken. I have tried 3 ways but all of them throwing error:

    1). As suggested:

    @{$difference[0]}
    Error -- >Can't use string ("ARRAY(0x2c992e0)") as an ARRAY ref while +"strict refs" in use at

    2). Tried 2nd way

    @{$difference}
    Error as below -- >
    Global symbol "$difference" requires explicit package name at Global symbol "$intersect" requires explicit package name at Global symbol "$union" requires explicit package name at .

    3). tried 3rd way

    @difference
    DEBUG: - difference links values ARRAY(0x32690e0) ARRAY(0x3269090) ARR +AY(0x322d040) ARRAY(0x3276990) ARRAY(0x322d060) ARRAY(0x3269f80) ARRA +Y(0x3269040) DEBUG: - intersect links values DEBUG: - union links values ARRAY(0x32690e0) ARRAY(0x3269090) ARRAY(0x +322d040) ARRAY(0x3276990) ARRAY(0x322d060) ARRAY(0x3269f80) ARRAY(0x3 +269040)

    Expected output should be device names(e.g ..ABC-DCFE41->90) so that I can remove difference part one by one from the data set.

        Thanks for the response but if you see my code I pasted my code between . I really don't know why are you angry with me ... I am expecting output as device name which I stated in my previous reply. Please don't be angry my apologies. I am able to read my code clearing I don't know why are you saying unreadable mess .... I am again pasting it ...
        sub updatedevice() { my $n = {}; my $Device_LINK = $server->object("ICF_PersistentDataSet",$devicelinks +); my $Temp_Device_LINK = $server->object("ICF_PersistentDataSet",$tempde +vicelinks); my @current_devicelist = @{ $Device_LINK->invoke("get") }; my @temp_devicelist = @{ $Temp_Device_LINK->invoke("get") }; my %temp_list; my %current_list; my $size = @current_list; for ($n=0; $n < $size; $n++) { our $device=$current_list[$n][0]; DEBUG( "DEBUG: - devicelinks values $device " ); my $size = @temp_list; for ($n=0; $n < $size; $n++) { our $tempdevicelinks=$temp_list[$n][0]; DEBUG( "DEBUG: - temp plc links values $tempdevicelinks " ); my %count = (); foreach my $device (@current_list, @temp_devicelist) { $count{$device}++; } my @difference = grep { $count{$_} == 1 } keys %count; my @intersect = grep { $count{$_} == 2 } keys %count; my @union = keys %count; DEBUG( "DEBUG: - difference links values $difference[0] " ); DEBUG( "DEBUG: - intersect links values $intersect[0] " ); DEBUG( "DEBUG: - union links values $union[0] " ); } } }

        expected output device names Also I am able to read $device and $tempdevicelinks values as "ABC-DCFE41->90" "GHJKL-poiu->78"

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1079633]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (1)
As of 2024-04-24 17:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found