Sponsored Content
Top Forums Shell Programming and Scripting Perl: Understanding @allwords Post 302627429 by 300zxmuro on Friday 20th of April 2012 02:39:55 PM
Old 04-20-2012
Quote:
Originally Posted by sam05121988
your array @allwords is empty hence foreach loop would never execute
you will still have an empty hash after the foreach loop
thus the last statement won't cause any difference and @allwords would still be empty

if you had some entries in @allwords say,

Code:
 
my @allwords = qw/a b c d a/;
my %seen=();
foreach my $curr (@allwords) {
$seen{$curr} = 1;
}
@allwords = keys %seen;

the foreach loop will assing each element of the array @allwords as a key to %seen hash and each key would have 1 as it's value i.e.,

Code:
 
$seen{$a}=1
$seen{$b}=1
$seen{$c}=1
$seen{$d}=1
$seen{$a}=1 #already exists so would be discarded

however, on the last iteration when $curr is a again, your hash already has a key a with value as 1, so it won't allow a duplicate entry and last element of @allwords would be discarded

Code:
 
@allwords = keys %seen;

keys %seen would return ('a','b','c','d') and assign it to @allwords

hence, in short your code here would remove any duplicate entries in an array
Njoy!! Smilie

THANK YOU!!!

---------- Post updated at 11:39 ---------- Previous update was at 11:39 ----------

Quote:
Originally Posted by Klashxx
You can achieve the same result with map:
Code:
my %seen=map { $_ => 1 } @allwords; 
@allwords= keys %seen;

THANK YOU!!Smilie
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need help understanding perl script error

I solicited this site earlier this week and got a good answer for a perl Script so I made this script from what understood from the answers But now I have a bug and I'm stump. It doesn't parse correctly the Output it stays on the first line My $f2 and reprints in a endless loop I'm sure there... (3 Replies)
Discussion started by: Ex-Capsa
3 Replies

2. UNIX for Dummies Questions & Answers

Perl Meta character understanding

Hello All, I have some expression: if (/^(\d\d\d\d\d\.\d\d\d\d\d\d)\s+(.+)$/) { warn "$argv0(" . __LINE__ . "): rbl2ts{$2} == '$rbl2ts{$2}' \$1==$1\n" if ($debug); $rbl2ts{$2} = $1 if (!defined($rbl2ts{$2}) or ($1 le $rbl2ts{$2})); warn "$argv0(" . __LINE__ . "):... (3 Replies)
Discussion started by: suvenduperl
3 Replies

3. Shell Programming and Scripting

perl command understanding

Hi All, Can you please help me interpret the following command. Which I am not able to understand. Also can you please illustrate what it is used for. perl -pi -e 's/\015//g' text_file.dat Regards (3 Replies)
Discussion started by: rakesh.su30
3 Replies

4. Shell Programming and Scripting

Understanding perl statement

can someone help me how to interpret this line? my ($class, $hashref) = @_; my $portfolio = {}; if ($hashref->{portfolio_id}) { ($portfolio) = GEmySQL->get ("select * from portfolio where portfolio.id=$hashref->{portfolio_id}"); } =============== Question: how do... (2 Replies)
Discussion started by: onlinelearner02
2 Replies

5. Shell Programming and Scripting

Help understanding Perl code.

Well, I found myself trying to fix some Perl code (Ive never done any Perl in my life) and I pinpointed the place where the bug could be. But to be sure I have to know what does a few line of code mean: $files_lim =~ (/^\d*$/) $files_lim =~ (/^\d*h$/)$files_age =~ s/h//The code where this was... (0 Replies)
Discussion started by: RedSpyder
0 Replies

6. Shell Programming and Scripting

Help understanding some Perl code.

Well, I found myself trying to fix some Perl code (Ive never done any Perl in my life) and I pinpointed the place where the bug could be. But to be sure I have to know what does a few line of code mean: $files_lim =~ (/^\d*$/) $files_lim =~ (/^\d*h$/) $files_age =~ s/h// The code where... (2 Replies)
Discussion started by: RedSpyder
2 Replies

7. Programming

Understanding perl code

What is the difference between the two statements below? A: $a->{"$fruit"}->{"$color"}->{size} = $size B: $size = $a->{"$fruit"}->{"$color"}->{size} Please assist. Thanks! (0 Replies)
Discussion started by: onlinelearner02
0 Replies

8. Shell Programming and Scripting

understanding thread in perl

Hi all, I am trying to build threads which will go to localhost and list the files in given folder. #!/usr/bin/perl use threads; my $t1 = threads->new(\&sub1, 1); my $t2 = threads->new(\&sub2, 2); push(@threads,$t1); push(@threads,$t2); foreach... (5 Replies)
Discussion started by: PranavEcstasy
5 Replies

9. Shell Programming and Scripting

Help with perl code understanding

Hi, I need to understand below perl code, can some one advise me. perl -MDate::Parse -e'BEGIN{$main::now=time;$main::old=(time-60*30)}' -nE'if(/^(\w+\s+\d+\s+\d+:\d+:\d+)/) {$t=str2time $1; $t > $old && $t < $now && print}' (1 Reply)
Discussion started by: learnbash
1 Replies

10. Shell Programming and Scripting

Help understanding perl script

Hello, A former sys admin placed this script on one of our boxes and it needs to be adjusted, but I'm not familiar with perl. Can someone help break this down for me? I'm particularly interested in the -mtime function. What's the time frame being referenced here. ... (5 Replies)
Discussion started by: bbbngowc
5 Replies
nvlist_next_nvpair(3NVPAIR)				 Name-value Pair Library Functions			       nvlist_next_nvpair(3NVPAIR)

NAME
nvlist_next_nvpair, nvpair_name, nvpair_type - return data regarding name-value pairs SYNOPSIS
cc [ flag... ] file... -lnvpair [ library... ] #include <libnvpair.h> nvpair_t *nvlist_next_nvpair(nvlist_t *nvl, nvpair_t *nvpair); char *nvpair_name(nvpair_t *nvpair); data_type_t nvpair_type(nvpair_t *nvpair); PARAMETERS
nvl The nvlist_t to be processed. nvpair Handle to a name-value pair. DESCRIPTION
The nvlist_next_nvpair() function returns a handle to the next nvpair in the list following nvpair. If nvpair is NULL, the first pair is returned. If nvpair is the last pair in the nvlist, NULL is returned. The nvpair_name() function returns a string containing the name of nvpair. The nvpair_type() function retrieves the value of the nvpair in the form of enumerated type data_type_t. This is used to determine the appropriate nvpair_*() function to call for retrieving the value. RETURN VALUES
Upon successful completion, nvpair_name() returns a string containing the name of the name-value pair. Upon successful completion, nvpair_type() returns an enumerated data type data_type_t. Possible values for data_type_t are as follows: o DATA_TYPE_BOOLEAN o DATA_TYPE_BOOLEAN_VALUE o DATA_TYPE_BYTE o DATA_TYPE_INT8 o DATA_TYPE_UINT8 o DATA_TYPE_INT16 o DATA_TYPE_UINT16 o DATA_TYPE_INT32 o DATA_TYPE_UINT32 o DATA_TYPE_INT64 o DATA_TYPE_UINT64 o DATA_TYPE_STRING o DATA_TYPE_NVLIST o DATA_TYPE_BOOLEAN_ARRAY o DATA_TYPE_BYTE_ARRAY o DATA_TYPE_INT8_ARRAY o DATA_TYPE_UINT8_ARRAY o DATA_TYPE_INT16_ARRAY o DATA_TYPE_UINT16_ARRAY o DATA_TYPE_INT32_ARRAY o DATA_TYPE_UINT32_ARRAY o DATA_TYPE_INT64_ARRAY o DATA_TYPE_UINT64_ARRAY o DATA_TYPE_STRING_ARRAY o DATA_TYPE_NVLIST_ARRAY Upon reaching the end of a list, nvlist_next_pair() returns NULL. Otherwise, the function returns a handle to next nvpair in the list. These and other libnvpair(3LIB) functions cannot manipulate nvpairs after they have been removed from or replaced in an nvlist. Replacement can occur during pair additions to nvlists created with NV_UNIQUE_NAME_TYPE and NV_UNIQUE_NAME. See nvlist_alloc(3NVPAIR). ERRORS
No errors are defined. EXAMPLES
Example 1 Example of usage of nvlist_next_nvpair(). /* * usage of nvlist_next_nvpair() */ static int edit_nvl(nvlist_t *nvl) { nvpair_t *curr = nvlist_next_nvpair(nvl, NULL); while (curr != NULL) { int err; nvpair_t *next = nvlist_next_nvpair(nvl, curr); if (!nvl_check(curr)) if ((err = nvlist_remove(nvl, nvpair_name(curr), nvpair_type(curr))) != 0) return (err); curr = next; } return(0); } ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +----------------------------+------------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +----------------------------+------------------------------+ |Interface Stability | Evolving | +----------------------------+------------------------------+ |MT-Level | MT-Safe | +----------------------------+------------------------------+ SEE ALSO
libnvpair(3LIB), nvlist_alloc(3NVPAIR), attributes(5) NOTES
The enumerated nvpair data types might not be an exhaustive list and new data types can be added. An application using the data type enu- meration, data_type_t, should be written to expect or ignore new data types. SunOS 5.11 2 Feb 2004 nvlist_next_nvpair(3NVPAIR)
All times are GMT -4. The time now is 01:36 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy