{     my $project=shift;     my $BasePrj=shift;          my $PreProject="";     my $Pos;     my @hlp;     my @h;     my @BaseFolders;     my @CurFolders;     my $CurFol;     my @NewTasks;     my ($i, $j);     my @Docu1;     my @Purpose_;     my $Task_;     my $Platform_; print    "\n\n";     $PreProject = $project;     while(($BasePrj ne $PreProject) && ($PreProject ne "") && ($project ne "") )     { #print $BasePrj."  ------ ".$PreProject."\n";         if(!($PreProject =~ /:project:/))         {             $PreProject .="";         }         $qst = "$ccm query /u \"is_predecessor_of('$PreProject')\""; print     $qst."\n";         @_ = qx($qst);         if($_[0] eq "")         {             $PreProject = "";         }         foreach(@_)         {             @hlp = split(/ /,$_);                         $PreProject = $hlp[0];             if($BasePrj eq $PreProject)             {                  last;             } #print     $hlp[0]."\n";             $qst = "$ccm rp /u /sh folders $hlp[0]"; print     $qst."\n";             @h = qx($qst);             foreach(@h)             {                  @hlp = split(/ /,$_);                  @hlp  = split(/:/,$hlp[1]); #print     "p--- ".$hlp[0]."\n";                  push(@CurFolders,$hlp[0]);                         }         }     }     $qst = "$ccm rp /u /sh folders $project"; print     $qst."\n";     @h = qx($qst);     foreach(@h)     {         @hlp = split(/ /,$_);         @hlp  = split(/:/,$hlp[1]); #print     "c--- ".$hlp[0]."\n";         foreach(@CurFolders)         {             if($_ eq $hlp[0])             {                  $hlp[0]=" ";             }         }         if($hlp[0] ne " ")         {             push(@CurFolders,$hlp[0]);                     }     }         $qst = "$ccm rp /u /sh folders $BasePrj"; print     $qst."\n";     @h = qx($qst);     foreach(@h)     {         @hlp = split(/ /,$_);         @hlp  = split(/:/,$hlp[1]); #print     "c--- ".$hlp[0]."\n";         foreach(@CurFolders)         {             if($_ eq $hlp[0])             {                  $hlp[0]=" ";             }         }         if($hlp[0] ne " ")         {             push(@BaseFolders,$hlp[0]);                     }     }         foreach(@BaseFolders)     { #print $_."\n";             $CurFol=$_;         foreach(@CurFolders)         {             $qst = "$ccm folder /u /comp $_ /not $CurFol "; print     $qst."\n";             @_ = qx($qst);             foreach(@_)             {                  @hlp = split(/ /,$_);                  @hlp  = split(/:/,$hlp[1]); #print     "--- ".$hlp[0]."\n";                  foreach(@NewTasks)                  {                      if($_ eq $hlp[0])                      {                          $hlp[0]=" ";                      }                  }                  if($hlp[0] ne " ")                  {                      push(@NewTasks,$hlp[0]);                                      }             }         }     }     $i=0;     foreach(@NewTasks)     {         $qst = "$ccm task /show info $_"; print     $qst."\n"; #        system($qrystr);         @_ = qx($qst);         $j=0;         @Docu1="";         foreach(@_)         {             push(@Docu1, $_);             $DocArray[$i][$j] = $_;             $j++;         }         @Purpose_=GetPurpose(@Docu1);         $Platform_=GetPlatform(@Docu1);         $Task_ = $_;         foreach(@Purpose_)         { #print     $_."\n";                 push(@Docu,"\n\n*****************************************************\n");             push(@Docu,"-New Task Purpose-MyTask: ".$Task_."\n-New Task Purpose-");             push (@Docu,"Purpose: ".$_."\n");             push(@Docu,"-New Task Purpose-");                     push (@Docu,"Project: ".$project."\n");             push(@Docu,"-New Task Purpose-");                     push (@Docu,"Platform: ".$Platform_."\n");             push(@Docu,"-New Task Purpose-");                     foreach(@Docu1)             {                  push(@Docu, $_);                         }         }         $i++;     }     push(@Docu,"\n\n"); }