( $ORACLE_SID ) = ( $basename =~ /[A-Z]*/ ) ; <-- I tried that but that
won't work ...
( $ORACLE_SID ) =s/[^A-Z]//g;
 -Muthu
 On 10/5/05, BERTHOLD Jean <[EMAIL PROTECTED]> wrote:
>
> Hello Muthukumar,
>  My problem is that I would like to extract a part of a variable (which is
> a filename stored in this variable.
> The part I want to extract is only composed of characters in uppercase.
> For example if I have this file list:
>  -rw-r--r-- 1 oracle dba 13659 Oct 5 01:04 rman_APPEOS-
> archivelog-05-10-05-0100.log
> -rw-r--r-- 1 oracle dba 12778 Oct 5 01:49 rman_NDOS-
> archivelog-05-10-05-0145.log
> -rw-r--r-- 1 oracle dba 26231 Oct 5 01:55 rman_CAREOFFICE-
> archivelog-05-10-05-0130.log
> -rw-r--r-- 1 oracle dba 14429 Oct 5 02:07 rman_IXOS-
> archivelog-05-10-05-0200.log
> -rw-r--r-- 1 oracle dba 3985 Oct 5 02:32 rman_TEST-
> archivelog-05-10-05-0230.log
> -rw-r--r-- 1 oracle dba 16788 Oct 5 03:06 rman_ORAMGT-
> archivelog-05-10-05-0300.log
> -rw-r--r-- 1 oracle dba 1991 Oct 5 03:32 rman_DIVERS-
> archivelog-05-10-05-0330.lo
>   For each file i want only the uppercase part. Like "APPEOS", "NDOS",
> "CAREOFFICE"...
> Then I want to store this part in a variable.
>  Below is my script:
> ---------------------------
> my @SOURCE_FILES = glob "/u01/oracle/local/logs/*.log" ;
> ...
> foreach ( @SOURCE_FILES )
> {
> if ( -M $_ < 1 )
> {
> my $name = $_ ;
> my $basename = basename $name ;
> my $ORACLE_SID = "" ;
> ( $ORACLE_SID ) = ( $basename =~ /[A-Z]*/ ) ; <-- I tried that but that
> won't work ...
> #print "Nom du fichier: $_\n" ;
> print "Nom du fichier: $basename\n" ;
> print "Instance Oracle: $ORACLE_SID\n" ;
> }
> }
>   ( $ORACLE_SID ) = ( $basename =~ /[A-Z]*/ ) ; <-- I tried that but that
> won't work ...
>   output is:
> -------------
> [EMAIL PROTECTED] [ORAMGT] # ./ScanRMANLogs.pl
> Nom du fichier: rman_APPEOS-archivelog-05-10-05-0100.log
> Instance Oracle: 1
> Nom du fichier: rman_CAREOFFICE-archivelog-05-10-05-0130.log
> Instance Oracle: 1
> Nom du fichier: rman_DIVERS-archivelog-05-10-05-0330.log
> Instance Oracle: 1
> Nom du fichier: rman_IXOS-archivelog-05-10-05-0200.log
> Instance Oracle: 1
> Nom du fichier: rman_NDOS-archivelog-05-10-05-0145.log
> Instance Oracle: 1
> Nom du fichier: rman_ORAMGT-archivelog-05-10-05-0300.log
> Instance Oracle: 1
> Nom du fichier: rman_TEST-archivelog-05-10-05-0230.log
> Instance Oracle: 1
> [EMAIL PROTECTED] [ORAMGT] #
> I would like to have something like:
> --------------------------------------------------
> Nom du fichier: rman_APPEOS-archivelog-05-10-05-0100.log
> Instance Oracle: APPEOS
>  Thanks for your help !
>   Jean
>
> -----Message d'origine-----
> *De :* Muthukumar [mailto:[EMAIL PROTECTED]
> *Envoyé :* mercredi, 5. octobre 2005 12:21
> *À :* BERTHOLD Jean
> *Cc :* [email protected]
> *Objet :* Re: Extracting Upper case letter from a variable
>
>  You have to try as,
>  $var=~operation;
>  Example:
>  # perl -e '$var="HIbyeok";$var=~s/HI/OK/;printf $var . "\n";'
> OKbyeok
>  -Muthu
>  On 10/5/05, BERTHOLD Jean <[EMAIL PROTECTED]> wrote:
> >
> > Hello,
> >
> > I try to replace my old shells scripts with perl ...
> >
> > Can you tell me how to extract a substring in upper case from a variable
> > and assign that substring to a variable ?
> >
> > Do I need to proceed character by character using a loop to recognize
> > each upper case or can I do that by using regular expression ?
> >
> > In shell scripts, of course I use awk. Then I cannot find it's
> > equivalent in perl.
> >
> > For example, I need to extract the word "DIVERS" from the filename
> > "rman_DIVERS-archivelog-29-09-05-0330.log" and assign this word to a
> > variable.
> >
> > In shell script this is done by something like that:
> >
> > --------------------------------------------------------------------------
> > gauche=`ls rman_DIVERS-archivelog-29-09-05-0330.log | awk -F- '{print
> > $1}'`
> > ORACLE_SID=`echo $gauche | awk -F_ '{print $2}'`
> >
> > And in Perl, can you help me ?
> >
> > Thanks and have a nice day !
> >
> > E O S H o l d i n g
> >
> > Jean Berthold
> >
> > Administrateur Unix & Oracle
> >
> > Unité Gestion de l'infrastructure
> >
> > Team Systèmes
> >
> > Ch. de Mornex 10
> >
> > Tel +41 21 341 24 58
> >
> > Fax +41 21 341 20 46
> >
> > [EMAIL PROTECTED]
> >
> >
> >
>

Reply via email to