in reply to Perl array output sorting

OK, this is a version trying to output the commands in the order you described. Since you only gave an example but did not give any specific rules as to how to get to the result in your example, I based the code on the idea that the DB sequence break must occur after each occurrence of a record containing "exch remove".

use strict; use warnings; my @db= qw /db1 db2/; my @commands =( "HPRMCLI exch create -s EXCHDAGNODE1 ", "HPRMCLI exch mount -h RMEBackupSvr", "HPRMCLI exch validate -level Log", "HPRMCLI exch unmount ", "HPRMCLI exch remove ", "HPRMCLI exch create -s EXCHDAGNODE2 -nc", "HPRMCLI exch mount -h RMEBackupSvr", "HPRMCLI exch validate -level Full", "HPRMCLI exch unmount ", "HPRMCLI exch remove "); my @out_com; for (@commands) { push @out_com, $_; if (/exch remove/) { for my $database (@db) { print map {"$_ -mdb $database \n"} @out_com; } @out_com = (); } }
This gives the following output:
$ perl commands.pl HPRMCLI exch create -s EXCHDAGNODE1 -mdb db1 HPRMCLI exch mount -h RMEBackupSvr -mdb db1 HPRMCLI exch validate -level Log -mdb db1 HPRMCLI exch unmount -mdb db1 HPRMCLI exch remove -mdb db1 HPRMCLI exch create -s EXCHDAGNODE1 -mdb db2 HPRMCLI exch mount -h RMEBackupSvr -mdb db2 HPRMCLI exch validate -level Log -mdb db2 HPRMCLI exch unmount -mdb db2 HPRMCLI exch remove -mdb db2 HPRMCLI exch create -s EXCHDAGNODE2 -nc -mdb db1 HPRMCLI exch mount -h RMEBackupSvr -mdb db1 HPRMCLI exch validate -level Full -mdb db1 HPRMCLI exch unmount -mdb db1 HPRMCLI exch remove -mdb db1 HPRMCLI exch create -s EXCHDAGNODE2 -nc -mdb db2 HPRMCLI exch mount -h RMEBackupSvr -mdb db2 HPRMCLI exch validate -level Full -mdb db2 HPRMCLI exch unmount -mdb db2 HPRMCLI exch remove -mdb db2
which I think is what you are looking for. I kept the @out_com array, but this time only as a temporary array to store and group the lines needing to go together between the db breaks.

Replies are listed 'Best First'.
Re^2: Perl array output sorting
by dvinay (Acolyte) on Nov 03, 2013 at 09:56 UTC

    Thanks a lot Laurent_R for the timely help, i got the required output.

    Once again thanks a lot.

    Thanks,

    Vinay