in reply to How to find ant home/specific directory in Linux using perl

If I understand the question correctly, you need to change this line:

my $modulesDir = File::Spec->catfile($testDir, "modules");

to:

my $modulesDir = File::Spec->catfile(($testDir, 'common'), "modules");

Also, this line:

return File::Spec->catfile($testDir, $antDir);

should be:

return File::Spec->catfile($modulesDir, $antDir);

See File::Spec.

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Replies are listed 'Best First'.
Re^2: How to find ant home/specific directory in Linux using perl
by sandeepda (Novice) on Feb 05, 2014 at 09:07 UTC
    Let me rephrase the question Lets assume I have a ant directory "org.apache.ant_" at different location in 2 diffrent version of weblogic server In weblogic 5 it is in A/B/org.apache.ant.1.3/bin In weblogic 6 it is A/B/C/org.apache.ant.1.4/bin I know it exists in Directory A but trying to write a script inside A where it exists soo my script should find for org.apache.ant.x.y and return A/B/org.apache.ant.1.3 or A/B/C/org.apache.ant.1.4

      OK, you need to search directory A recursively until you find the first sub-directory named org.apache.ant.x.y (where x and y are integers). The module File::Find::Rule is useful for this.

      I created a directory structure like this:

      862_SoPW |-- weblogic_5 |-- A |-- B |-- org.apache.ant.1.3 |-- bin |-- weblogic_6 |-- A |-- B |-- C |-- org.apache.ant.1.4 |-- bin

      and ran the following script from directory 862_SoPW:

      #! perl use strict; use warnings; use File::Find::Rule; for (5 .. 7) { my $ant_home = get_ant_home('weblogic_' . $_) // 'not found'; print "In weblogic_$_, ant home is: $ant_home\n"; } sub get_ant_home { my $test_dir = shift; my $module_dir = $test_dir . '/A'; my @subdirs = File::Find::Rule->directory->in($module_dir); for (@subdirs) { return $_ if /org\.apache\.ant\.\d+\.\d+$/; } }

      Output:

      1:45 >perl 862_SoPW.pl In weblogic_5, ant home is: weblogic_5/A/B/org.apache.ant.1.3 In weblogic_6, ant home is: weblogic_6/A/B/C/org.apache.ant.1.4 In weblogic_7, ant home is: not found 1:46 >

      I think you should be able to adapt this to your requirements.

      Hope that helps,

      Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,