Bonjour,

J'essai en vain de traduire mon script shell en script perl pourriez vous m'aider?

Mon script est assez simple dans son fonctionnement.
J'ai un fichier contenant des nom de repertoireet d'application séparé par ":" (première boucle for)
La deuxième boucle li un fichier dictionnaire qui contient les motifs a rechercher dans le grep.

Ensuite j'ecrit simplement la valeur de mes variables dans un fichier texte classique (3ème boucle).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/sh

PATH_SCRIPT=~/kg_test
PATH_FILE_DEST=/dlagc/export/kg_recensement/

echo "SET DEFINE OFF;">$PATH_FILE_DEST/sql_table_export.sql
echo "CREATE TABLE DDL_TABLE_RECENSEMENT ("TABLE_NAME" VARCHAR2(100 BYTE), "TYPE" VARCHAR2(100 BYTE), "APPLI" VARCHAR2(100 BYTE), "SOURCE" VARCHAR2(100 BYTE));">>$PATH_FILE_DEST/sql_table_export.sql

# sed dans la fonction permet d'eviter les probleme cause par les nom de fichier avec des espaces
# ou des apostrophes

recherche ()
{
 for rep in `cat $PATH_SCRIPT/$1`; do

  apps=`echo $rep|cut -f2 -d:`
  rep=`echo $rep|cut -f1 -d:`

  cd $rep

    for name in `cat $PATH_SCRIPT/dico_table.txt`; do

      for file in `grep -i $name *|cut -f1 -d:|sed s/"\ "/"@"/g|sed s/"\'"/"\'\'"/g`; do

       file2=`echo $file|sed s/"@"/"\ "/g` #astuce pour contourner le problème des espaces en shell

       echo "Insert Into DDL_TABLE_RECENSEMENT (table_name, type, appli, source) Values ('$name','$type','$apps','$file2');">>$PATH_FILE_DEST/sql_table_export.sql

      done

    done

done
 
}

echo "################# Forms Oracle #################"

type=Oracle_Forms
recherche rep_forms.txt #fichier texte de la forme /rep/:Appli
Je pense que le perl devrait fournir de bien meilleur performances?

Merci d'avance.