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
BZEXE(1)						      General Commands Manual							  BZEXE(1)

NAME
bzexe - compress executable files in place SYNOPSIS
bzexe [ name ... ] DESCRIPTION
The bzexe utility allows you to compress executables in place and have them automatically uncompress and execute when you run them (at a penalty in performance). For example if you execute ``bzexe /bin/cat'' it will create the following two files: -r-xr-xr-x 1 root bin 9644 Feb 11 11:16 /bin/cat -r-xr-xr-x 1 bin bin 24576 Nov 23 13:21 /bin/cat~ /bin/cat~ is the original file and /bin/cat is the self-uncompressing executable file. You can remove /bin/cat~ once you are sure that /bin/cat works properly. This utility is most useful on systems with very small disks. OPTIONS
-d Decompress the given executables instead of compressing them. SEE ALSO
bzip2(1), znew(1), zmore(1), zcmp(1), zforce(1) CAVEATS
The compressed executable is a shell script. This may create some security holes. In particular, the compressed executable relies on the PATH environment variable to find gzip and some other utilities (tail, chmod, ln, sleep). BUGS
bzexe attempts to retain the original file attributes on the compressed executable, but you may have to fix them manually in some cases, using chmod or chown. BZEXE(1)
All times are GMT -4. The time now is 12:30 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy