[Perl] if else vraagje

Pagina: 1
Acties:

  • usr-local-dick
  • Registratie: September 2001
  • Niet online
Klein vraagje ik heb onderstaande code, werkt prima:

Perl:
1
2
3
4
5
6
7
if(get_list_id(reverse split("@", $list)) {
  $id = get_list_id(reverse split("@", $list);
}elsif(get_list_id($args{domain}, $list) {
  $id = get_list_id($args{domain}, $list);
}else{
  $id = undef;
}

Alleen ik doe nu functie calls naar get_list_id twee keer bij een match.
Een keer om te checken of de call lukt, daarna om het resultaat in een variable te zetten.
Is het niet mogelijk om het resultaat van zo'n matchende IF te bewaren en te gebruiken in het code block waar daarop volgt?

[ Voor 8% gewijzigd door usr-local-dick op 29-01-2007 12:30 ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

code kan je tussen [code=perl][/code] blokken plaatsen. Leest wat overzichtelijker ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 07:20

BCC

$var = get_list_id(reverse split("@", $list)
if ($var)
$id = var

[ Voor 10% gewijzigd door BCC op 29-01-2007 11:31 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
BCC schreef op maandag 29 januari 2007 @ 11:30:
$var = get_list_id(reverse split("@", $list)
if ($var)
$id = var
Wat dacht je van:

Perl:
1
2
if( $var = get_list_id(reverse split("@", $list) )
  $id = var

Zou ook moeten werken in Perl.

TS zijn code wordt dan:

Perl:
1
2
3
4
if (!($id = get_list_id(reverse split("@", $list))) 
  if(!($id = get_list_id($args{domain}, $list))
    $id = undef;
}


Heel compact, maar wel ontzettend onleesbaar. :+

[ Voor 26% gewijzigd door Grijze Vos op 29-01-2007 11:34 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 07:20

BCC

Grijze Vos schreef op maandag 29 januari 2007 @ 11:32:
Heel compact, maar wel ontzettend onleesbaar. :+
The power of perl :)

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • usr-local-dick
  • Registratie: September 2001
  • Niet online
Thanks jongens, ik heb em aangepast nu.

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Ik zou hem sowieso zo doen:

Perl:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use warnings;
# Common practice..

# ...
# ... rest van de code ...
# ...

my $id = get_list_id(reverse split("@", $list)
        ||  get_list_id($args{domain}, $list)
        ||  undef;
# Niks geen fratsen met if-elsif-else, gewoon logical OR.   
# Scheelt ook nogal wat regels


# ...
# ... En weer door met de rest van de code ...
# ...

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Nog nooit met perl gewerkt zelf, maar syntactisch gezien kun je iets soortgelijks doen in php, en c/c++ ook lijkt me.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14:58
Zo is 't nog makkelijker:
Excuses, ik had MUBA's reactie over het hoofd gezien. Dat lijkt me ook de beste methode.

edit:
Volgens mij mist de code in de TS, en daardoor ook MUBA's code, wat sluitende haakjes?

[ Voor 81% gewijzigd door Soultaker op 30-01-2007 16:41 ]


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Soultaker schreef op dinsdag 30 januari 2007 @ 16:38:

Volgens mij mist de code in de TS, en daardoor ook MUBA's code, wat sluitende haakjes?
Puh, je hebt gelijk. Copy/paste... Nouja, you get what you pay for, zullen we maar zeggen.
Bij deze de fix:

Perl:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use warnings;
# Common practice..

# ...
# ... rest van de code ...
# ...

my $id = get_list_id( reverse split("@", $list) )     # Stomme haakjes...
        ||  get_list_id($args{domain}, $list)
        ||  undef;
# Niks geen fratsen met if-elsif-else, gewoon logical OR.   
# Scheelt ook nogal wat regels


# ...
# ... En weer door met de rest van de code ...
# ...

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea

Pagina: 1