Variables, condicionales y bucles

Variables

Escalares

my $fichero = "sec29.fa";
print $fichero . "\n";

Arrays

my @bases = ("A", "C", "G", "T");
print $bases[0] . "\n";
print $bases[1] . "\n";
print $bases[2] . "\n";
print $bases[3] . "\n";

Arrays asociativos

my %recuento = ("A" => 215, "C" => 231, "G" => 209, "T" => 306);
print $recuento{"A"} . "\n";
print $recuento{"C"} . "\n";
print $recuento{"G"} . "\n";
print $recuento{"T"} . "\n";

Condicionales

If…

my %recuento = ("A" => 215, "C" => 231, "G" => 209, "T" => 306);
if ($recuento{"A"} > $recuento{"T"}) {
    print "Hay más adeninas que timinas.\n";
}

If… else…

my %recuento = ("A" => 215, "C" => 231, "G" => 209, "T" => 306);
if ($recuento{"A"} > $recuento{"T"}) {
    print "Hay más adeninas que timinas.\n";
} else {
    print "No hay más adeninas que timinas.\n";
}

If… elsif… else…

my %recuento = ("A" => 215, "C" => 231, "G" => 209, "T" => 306);
if ($recuento{"A"} > $recuento{"T"}) {
    print "Hay más adeninas que timinas.\n";
} elsif ($recuento{"A"} < $recuento{"T"}) {
    print "Hay menos adeninas que timinas.\n";
} else {
    print "Hay las mismas adeninas que timinas.\n";
}

Unless

my %recuento = ("A" => 215, "C" => 231, "G" => 209, "T" => 306);
unless ($recuento{"A"} > $recuento{"T"}) {
    print "No hay más adeninas que timinas.\n";
}

Condicional de postfijo

my %recuento = ("A" => 215, "C" => 231, "G" => 209, "T" => 306);
print "Hay más adeninas que timinas.\n" if $recuento{"A"} > $recuento{"T"};

Operador ternario

my %recuento = ("A" => 215, "C" => 231, "G" => 209, "T" => 306);
my $masAqueT = $recuento{"A"} > $recuento{"T"} ? "Sí" : "No";
print "¿Hay más A que T?: $masAqueT\n";

Bucles

While…

my $contador = 0;
while ($contador < 10) {
    print $contador . "\n";
    $contador++; # incrementa el contador en 1
}
print "El bucle while ha terminado.\n";

Until…

my $contador = 10;
until ($contador > 0) {
    print $contador . "\n";
    $contador--; # decrementa el contador en 1
}
print "El bucle until ha terminado.\n";

Do… while…

my $contador = 0;
do {
    print "$contador\n";
    $contador++; 
} while ($contador < 10)
print "El bucle do... while... ha terminado.\n";

For…

my %recuento = ("A" => 0, "C" => 0, "G" => 0, "U" => 0);
my $secuencia = "CCAAUAGGAGCUGCCAGGAAUAGUUCCCCUGCGAGGACCACGACGCUUCGCCGCGCGGCUCACGCCCAA";
for (my $posicion = 0; $posicion < length($secuencia); $posicion++) {
    my $base = substr($secuencia, $posicion, 1);
    print "$posicion: $base\n";
    $recuento{$base}++;
}

Foreach…

my %recuento = ("A" => 215, "C" => 231, "G" => 209, "T" => 306);
foreach my $base (keys %recuento) {
    print $recuento{$base} . "\n";
}

Last

my %recuento = ("A" => 215, "C" => 231, "G" => 209, "T" => 306);
foreach my $base (keys %recuento) {
    print $base . ": " $recuento{$base} . "\n";
    last if $base eq "G";
}

Next

my %recuento = ("A" => 215, "C" => 231, "G" => 209, "T" => 306);
foreach my $base (keys %recuento) {
    next if $base eq "G";
    print $base . ": " $recuento{$base} . "\n";
}

Bucle de postfijo

my @bases = ("A", "C", "G", "T");
print $_ foreach @bases;

Leave a Reply