Visit Our UNIX and Linux User Community


how to put element of an array to first position.


 
Thread Tools Search this Thread
Top Forums Programming how to put element of an array to first position.
# 1  
Old 06-17-2010
how to put element of an array to first position.

hi,

I have a array like

my $array = ( "apple","ball","cat","dog","elephant");

how to push some element in the array to the first position.
for example my final array should be

elephant apple ball cat dog
# 2  
Old 06-17-2010
homework?

perldoc
push, pop, shift, unshift
# 3  
Old 06-17-2010
I assume, from the "my" keyword, you're using perl

One way to do this would be like this

unshift(@array,pop(@array));
# 4  
Old 06-18-2010
i tried this one to shift the element elephant to first position , but its not working, $_ is showing nothing here

if(grep $_ =~ m/elephant/, @array) {

unshift(@array, $_);
}

after moving the required element to the first position i want to remove that element from previous position.any help is appreciated.
# 5  
Old 06-18-2010
If you want to check the value, you'll need to do something like this:

Code:
#! /usr/bin/perl -w

use Data::Dumper;

my @array = ("apple","ball","cat","dog","elephant");

$_ = pop(@array);

if(m/elephant/) {
unshift(@array, $_);
}

print Dumper(@array);

Notice that the m// is implicitly working on the $_ variable.
# 6  
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

Previous Thread | Next Thread
Test Your Knowledge in Computers #115
Difficulty: Easy
Linux is a continuation of the Unix design philosophy.
True or False?

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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

Featured Tech Videos