Sponsored Content
Top Forums Programming how to put element of an array to first position. Post 302432748 by drl on Saturday 26th of June 2010 12:32:58 PM
Old 06-26-2010
Hi.

I was reading in Perl Best Practices - O'Reilly Media , and ran across a function first_index that resides in a recommended module, List::MoreUtils. Here are a few possibly-related ideas using such a function to identify an entry, then remove it to one end of the other of an array with the help of in-built functions splice. push, and unshift:
Code:
#!/usr/bin/env perl

# @(#) p1	Demonstrate list entry identification, movement.

use warnings;
use strict;
use List::MoreUtils qw( first_index );

my ( $debug, @a, @original, $t1, $t2 );
$debug = 1;
$debug = 0;

my ($want) = "cat";
@original = qw/ pig goat catastrophe cat dog turkey deer /;

@a = @original;

print "\n";
print " For simple string equality, \"cat\", constant, then variable:\n";
print "\n";
print " Constant, just to see a simple example:\n";
print "a (original   ) is :@a:\n";

$t1 = first_index { $_ eq "cat" } @a;
print $t1, "\n" if $debug;

$t2 = splice( @a, $t1, 1 );
print $t2, "\n" if $debug;

unshift @a, $t2;
print "a (for unshift) is :@a:\n";

print "\n";
print " Now with variables, a more likely situation:\n";
@a = @original;
print "a (original   ) is :@a:\n";

$t1 = first_index { $_ eq $want } @a;
print $t1, "\n" if $debug;

$t2 = splice( @a, $t1, 1 );
print $t2, "\n" if $debug;

unshift @a, $t2;
print "a (for unshift) is :@a:\n";

print "\n";
@a = @original;
print "a (original   ) is :@a:\n";

$t1 = first_index { $_ eq $want } @a;
print $t1, "\n" if $debug;

$t2 = splice( @a, $t1, 1 );
print $t2, "\n" if $debug;

push @a, $t2;
print "a (for push   ) is :@a:\n";

print "\n";
@a = @original;
print "a (original   ) is :@a:\n";
unshift @a, splice( @a, ( first_index { $_ eq $want } @a ), 1 );

print "a (single line) is :@a:\n";

@a = @original;

print "\n";
print " For string match regular expression, /$want/:\n";
print "\n";
print "a (original   ) is :@a:\n";

$t1 = first_index { $_ =~ m/$want/ } @a;
print $t1, "\n" if $debug;

$t2 = splice( @a, $t1, 1 );
print $t2, "\n" if $debug;

unshift @a, $t2;
print "a (for unshift) is :@a:\n";

exit(0);

producing:
Code:
% ./p1

 For simple string equality, "cat", constant, then variable:

 Constant, just to see a simple example:
a (original   ) is :pig goat catastrophe cat dog turkey deer:
a (for unshift) is :cat pig goat catastrophe dog turkey deer:

 Now with variables, a more likely situation:
a (original   ) is :pig goat catastrophe cat dog turkey deer:
a (for unshift) is :cat pig goat catastrophe dog turkey deer:

a (original   ) is :pig goat catastrophe cat dog turkey deer:
a (for push   ) is :pig goat catastrophe dog turkey deer cat:

a (original   ) is :pig goat catastrophe cat dog turkey deer:
a (single line) is :cat pig goat catastrophe dog turkey deer:

 For string match regular expression, /cat/:

a (original   ) is :pig goat catastrophe cat dog turkey deer:
a (for unshift) is :catastrophe pig goat cat dog turkey deer:

cheers, drl
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

accessing my first element of array

Hello everyonel, I have an array set like so num=4 read name arr=name I go through while loop to assign different values to different array element from 1 to 4. when I try to access the FIRST element of the array I get the last one first. Like if I say ${arr} it will show the last element... (4 Replies)
Discussion started by: afadaghi
4 Replies

2. Shell Programming and Scripting

Shift array element

I want to delete and 0th element of array in shell scrpit and also shift all others to one level up. (2 Replies)
Discussion started by: darshakraut
2 Replies

3. Shell Programming and Scripting

How to put a word starting at particular position in a file using shell scripting

Hi all, I'm new to shell scripting and hence this query. I have 2 files. temp.txt and config.txt. The values in temp.txt are tab separated. ex: temp.txt AB CDE GHIJ OPQRS WXY ex:config.txt (1st line for 1st element of temp.txt and so on) start = '1' end='5' start = '6' end =... (26 Replies)
Discussion started by: subhrap.das
26 Replies

4. Shell Programming and Scripting

perl, put one array into many array when field is equal to sth

Hi Everyone, #!/usr/bin/perl use strict; use warnings; my @test=("a;b;qqq;c;d","a;b;ggg;c;d","a;b;qqq;c;d"); would like to split the @test array into two array: @test1=(("a;b;qqq;c;d","a;b;qqq;c;d"); and @test2=("a;b;ggg;c;d"); means search for 3rd filed. Thanks find the... (0 Replies)
Discussion started by: jimmy_y
0 Replies

5. Shell Programming and Scripting

How to put count for first element in a file at the end

Hi, I have a file where I need to count the total for the first element and put it back at the end of file... here is the example... input.. FHDR|ABC|20100607| |ABC|8453|CDE|E166|||| 123|ABC|8453|CDE|E166|||| 123|ABC|8453|CDE|E166|||| 111|ABC|8453|CDE|E166||||... (8 Replies)
Discussion started by: donadarsh
8 Replies

6. Shell Programming and Scripting

remove an element from array

I need to remove an element from the below array variable TABLENAME. #!/bin/ksh set -A TABLENAME "mirf roxar keke mirs" echo "the array is ${TABLENAME}" If i need to remove say keke and have the final TABLENAME as below, how this could be achieved. Pls throw some light. echo "Modified... (3 Replies)
Discussion started by: michaelrozar17
3 Replies

7. Shell Programming and Scripting

Multiplying array element

I am trying to take all the elements of an array and multiply them by 2, and then copy them to a new array. Here is what I have i=0 for true in DMGLIST do let DMGSIZES2="${DMGSIZES}"*2 let i++ done unset i echo ${DMGSIZES2} It does the calculation correctly for the first element,... (7 Replies)
Discussion started by: nextyoyoma
7 Replies

8. Shell Programming and Scripting

Put words to fix position in a file

Hi all, There are several lines in my file as a=123,b=dene,c=2312,d=234234,g=vxcvxcv,h=44 a=3,b=dene,c=22,d=23422342334,g=vxcvxcv,h=4 a=123,b=dene,c=2312,d=234234,g=vxcvxcv,h=678 I take values with this command awk -F '' '{print $1,$2,$3}' a.txt I want to put values to a fix position... (6 Replies)
Discussion started by: bahadiraktan
6 Replies

9. UNIX for Advanced & Expert Users

Array Element

This question is for someone that's more familiar with Array Element. I need to know if the maximum array element that can be assigned is 1024 and if its so, Is there a workaround solution when the counter exceeded 1024? param_array="$param_nam" counter=$counter+1 #to avoid space... (3 Replies)
Discussion started by: cumeh1624
3 Replies

10. Shell Programming and Scripting

If test array element multiplication

Ya, I know, who in this day and age is mirroring rootvg...? But yes, my shop does and I need to script checking for it. I also know I could just inverse the the logic and call the LV mirrored if the LPs and PPs were not equal. But I want to do the math in the if test and also know I could... (5 Replies)
Discussion started by: gtsonoma
5 Replies
ARRAY_WALK_RECURSIVE(3) 						 1						   ARRAY_WALK_RECURSIVE(3)

array_walk_recursive - Apply a user function recursively to every member of an array

SYNOPSIS
bool array_walk_recursive NULL (array &$array, callable $callback, [mixed $userdata]) DESCRIPTION
Applies the user-defined $callback function to each element of the $array. This function will recurse into deeper arrays. PARAMETERS
o $array - The input array. o $callback - Typically, $callback takes on two parameters. The $array parameter's value being the first, and the key/index second. Note If $callback needs to be working with the actual values of the array, specify the first parameter of $callback as a refer- ence. Then, any changes made to those elements will be made in the original array itself. o $userdata - If the optional $userdata parameter is supplied, it will be passed as the third parameter to the $callback. RETURN VALUES
Returns TRUE on success or FALSE on failure. EXAMPLES
Example #1 array_walk_recursive(3) example <?php $sweet = array('a' => 'apple', 'b' => 'banana'); $fruits = array('sweet' => $sweet, 'sour' => 'lemon'); function test_print($item, $key) { echo "$key holds $item "; } array_walk_recursive($fruits, 'test_print'); ?> The above example will output: a holds apple b holds banana sour holds lemon You may notice that the key ' sweet' is never displayed. Any key that holds an array will not be passed to the function. SEE ALSO
array_walk(3), information about the callback type. PHP Documentation Group ARRAY_WALK_RECURSIVE(3)
All times are GMT -4. The time now is 07:58 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy