Perl Quiz

November 4th, 2006 Autor: Phillip Kroll - 2 Kommentare

Variablen und Deklarationen

(1) Welche der folgenden Deklarationen sind korrekte Skalar Variablen Deklarationen?

  • 1. my $var = 4;
  • 2. var = 4;
  • 3. my $var = "atgctga";

(2) Welche der folgenden Deklarationen sind syntatisch korrekte Array Variablen Deklarationen?

  • 1. my array = (1, 2, 3, 44);
  • 2. my @arr = (1, 2, 3, 4, 5 );
  • 3. my @avar = qw("atgctga", "tga", "atc" );
  • 4. my @avar = 4;

(3) Welche der folgenden Deklarationen sind syntatisch korrekte Hash Variablen Deklarationen?

  • 1. my hash = ('a' => 24, 'b' => 36);
  • 2. my %hash = ('a' => 24, 'b' => 36);
  • 3. my %hash = qw( 1 => atc, 2 => tgc );
  • 4. my %hash = qw( 1 => 'atc', 2 => 'tgc' ) + ;

(4) Bezogen auf (3): Was ist der korrekte Weg, um an den Wert des Schlüssels 'b' zu kommen?

  • 1. my $val = $hash{'b'};
  • 2. my $val = %hash{'b'};
  • 3. my $val = $hash{b};

(5) Was ist der Wert von $sub in diesem Codestück?

my $sub = substr("atgcatgcagtgc", 4, 4 );

  • 1. "catg"
  • 2. "atgc"
  • 3. "c"

(6) Wie ist der korrekte Weg, das vierte Element aus diesem Array zu bekommen?

my @a = qw( a b c d e );

  • 1. my $el = $a[ 4 ];
  • 2. my $el = $a[ 3 ];
  • 3. my $el = @a[ 3 ];

(7) Wie sortiert man das Array in absteigender Rheihenfolge?

my @a = (1.3, 5.7, 9.8, 11.2, 2.5 );

  • 1. my @sorted = sort {$a cmp $b} @a;
  • 2. my @sorted = sort {$b <=> $a} @a;
  • 3. my @sorted = sort {$a <=> $b} @a;

Reguläre Ausdrücke

(8) Welche der folgenden Ausdrücke sind syntatiksch korrekt?

  • 1. $str =~ /$my_regexp/;
  • 2. $str ~= /$my_regexp/;
  • 3. $str =~ /atgctga/;
  • 4. $str =~ m/atgtag/i;

(9) Welche der folgenden regulären Ausdrücke wir den Substring "atgct" in dem String "aaaaatgctacgt" finden?

  • 1. /(\w\w\w\w\w)/
  • 2. /(at..t)/
  • 3. /^(atgct)/
  • 4. /(a\w{3}[at])/

(10) Was ist der Wert von $a in dem folgenden Ausdruck?

my $string = "id:123 seq:atcgat conc:5.5mM";
my ($a) = $string =~ /^(\S+)/;

  • 1. 'id:123'
  • 2. 'id'
  • 3. 'id:123 seq:atcgat conc:5.5mM

(11) Was ist der Wert von @a in dem folgenden Ausdruck?

my $string = "id:123 seq:atcgat conc:5.5mM";
my @a = $string =~ /(\S+)/g;

  • 1. ( 'i', 'd' )
  • 2. ( 'id:123', 'seq:atcgat', 'conc:5.5mM' )
  • 3. ( 'id:123seq:atcgatconc:5.5mM' )

(12) Was ist der Wert von %a in dem folgenden Ausdruck?

my $string = "id:123 seq:atcgat conc:5.5mM";
my %a = $string =~ /(\w+):(\S+)/g;

  • 1. ( id => 123, seq => 'atcgat', conc => '5.5mM' )
  • 2. Undefined or and error
  • 3. (id123 => Undef, seq:atcgat => Undef, conc5.5mM => Undef)

Datenstrukturen

Gegeben ist folgende Datenstruktur:

my $data_ref = [
{seq => 'atgctagcta', id => 'seq1' },
{seq => 'ccttcgctgc', id => 'seq2' },
{seq => 'agtgtgtgatct', id => 'seq3' }
];

(13) Der Wert von $data_ref->[0]{'id'} ist:

  • 1. 'seq1'
  • 2. 'undefined'
  • 3. 'atgctagcta'

(14) Der Wert von $data_ref[0]{'id'} ist:

  • 1. 'seq1'
  • 2. "@data_ref" requires explicit package name
  • 3. 'ARRAY(0x1281e4)' (oder ähnlich)

(15) Um jede einzelne Sequenz in der Datenstruktur auszugeben funktioniert welcher Code?

  • 1. for my $seqhash ( @$data_ref ) { print "$seqhash->{'seq' }" };
  • 2. for my $seqhash ( % { @$data_ref } ) { print "$seqhash->{'seq' }" };
  • 3. while ( my $seqhash = shift @$data_ref ) { print "$seqhash->{'seq' }" };

(16) Um die Schlüssel für den zweiten Hash im Array zu bekommen funktioniert welcher Code?

  • 1. my @keys = keys % { $data_ref -> [1] };
  • 2. my @keys = keys % $data_ref -> [1];
  • 3. map{ push @keys, keys($_) }@$data_ref; };


Lösung:

(1) 1, 3 (2) 2, 3, 4 (3) 2, 3 (4) 1, 3 (5) 2 (6) 2, 3 (7) 2 (8) 1, 3, 4 (9) 2 (10) 1 (11) 2 (12) 1 (13) 1 (14) 2 (15) 1, 3 (16) 1

2 response(s) to Perl Quiz

  1. würmchen [Besucher] says:

    (2) Welche der folgenden Deklarationen sind syntatisch korrekte Array Variablen Deklarationen?
    * 3. my @avar = qw("atgctga", "tga", "atc" );

    und das geht??? dachte eigendlich das wenn man das qw wegläßt, das dann automatisch alles in qw gesetzt wird.... also ich mein das tut es da sicher auch, aber das is ja dann doppelt..

    :-D

  2. Phillip Kroll [Mitglied] @ http://www.includemedia.de says:

    Ja das geht! und ja, es ist doppelt gemoppelt und ziemlich sinnlos. wenn man sich den ersten Eintrag des @avar arrays mit print ausgeben lässt

    print @avar[ 0 ];

    ergibt das:

    "atgctga",

Kommentare sind für diesen Beitrag geschlossen.