The UNIX and Linux Forums  


Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Flera olika sätt i en variabel i Perl Raynon Shell-programmering och Skript 3 05-04-2009 11:10
Pass csh rörlig till Perl Raynon Shell-programmering och Skript 9 10-19-2007 10:46
perl inte läser min variabel yoonixq4u Shell-programmering och Skript 3 08-24-2007 10:24
PERL: hur kan vi tala om variabel är NULL dangral Shell-programmering och Skript 4 03-19-2003 01:34
perl variabel assingment seismic_willy Shell-programmering och Skript 2 01-29-2002 04:54

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 05-27-2009
zedex zedex is offline
Registered User
  
 

Join Date: februari 2007
Plats: Indien, Mumbai
Inlägg: 139
perl få variabelvärdet???

hej jag har följande kod

Kod:
my $a1 = "A" ;
my $a2 = "B" ;
my $a3 = "C" ;

foreach my $k ( 1,2,3 ) 
{
    my $msg = ${a{$k}} # this should be at runtime i am creating variable a1 and assigning it value to msg .
    print "$msg\n" ;
}

ovan är att inte arbeta!
Jag vill När k \u003d 1 msg \u003d "A"

Hur kan jag göra det?

----- Post Update -----

Jag fick den som arbetar jag skapade array istället för 3 variabler .. men om du kan berätta för mig hur kan göra det utan array bara för nyfikenhet ...

Senast redigerad av zedex; 05-27-2009 at 07:41.. Orsak: bort extra uppdatering ...
  #2 (permalänk)  
Old 05-27-2009
cbkihong cbkihong is offline Forum Advisor  
Advisor
  
 

Join Date: Sep 2002
Ort: Hongkong, Kina
Inlägg: 1624

Kod:
# No "my" here
$a1 = "A" ;
$a2 = "B" ;
$a3 = "C" ;

foreach my $k ( 1,2,3 )
{
    my $msg = ${"a${k}"};
    print "$msg\n" ;
}

Detta är symbolisk referens, och är inte normalt rekommendera. Det fungerar för variabler i symbolen tabellen bara, så det betyder att du inte kan använda detta trick för variabler som är lexikalt scoped (dvs "min").

Är du verkligen säker på att du vill ha det här? Jag kan inte komma på någon anledning att förespråka sådana konstruktioner i typiska program utom specialiserade moduler som behöver röra med symbolen bord direkt.
  #3 (permalänk)  
Old 05-27-2009
zedex zedex is offline
Registered User
  
 

Join Date: februari 2007
Plats: Indien, Mumbai
Inlägg: 139
Jag fick den som arbetar med array.

faktiskt fanns en del i kod som upprepas. vill kontrollera 5,6,7 argument längd är 1 och sedan dess giltig post så efter kontroll jag ville skriva ut vilka argument var fel.


Kod:
$ARG5 = "ADD ENTRY TO DATABASE" ;
$ARG6 = "ADD ENTRY TO REG FILE" ;
$ARG7 = "SHOW DEBUG MSG" ;

foreach $k in ( 5,6,7) 
{ 
     if ...
     {
      } else 
      { 
             print ${"ARG$k"} entry invalid\n" ;      
       }
}
 
so i created array 

@ARG = ( undef ,undef, ..., "ADD ENTRY TO REG FILE",...) ;

  #4 (permalänk)  
Old 05-27-2009
KevinADC KevinADC is offline Forum Advisor  
Registered User
  
 

Join Date: Jan 2008
Inlägg: 731
zedex,

vad du vill göra är att använda en hash.

Om man antar att resten av din kod fungerar:


Kod:
my %ARG = (
   5 => "ADD ENTRY TO DATABASE",
   6 => "ADD ENTRY TO REG FILE",
   7 => "SHOW DEBUG MSG",
);

foreach $k in (5,6,7) {
{ 
     if ...
     {
      } else 
      { 
             print "$ARG{$k} entry invalid\n" ;      
       }
}

Hashar är ett grundläggande begrepp i perl (och andra programmeringsspråk), måste du läsa upp dem och använda dem vid behov.
  #5 (permalänk)  
Old 05-28-2009
zedex zedex is offline
Registered User
  
 

Join Date: februari 2007
Plats: Indien, Mumbai
Inlägg: 139
tack KevinADC

Egentligen var jag deltagit i många saker så glömde enkel användning av HASH. även om jag använt hash av samma skäl som tidigare .. något sätt skönt att veta hur man gör
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 01:10.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0