|
Nombre:
Indique como saldrá formateada la salida del siguiente código:
my @items = qw(un dos tres); my $format = "Los items son:\n".("%10s\n"x @items); printf $format, @items;
Considere el siguiente código:
open FILEHANDLE, shift; while (<FILEHANDLE>) { print; }¿Existe el riesgo de ``muerte'' prematura debido a que una línea contenga sólamente
"0"
?
Pruebe con varios posibles ficheros de entrada. Observe que el operador
de lectura <FILEHANDLE>
incluye el retorno de carro \n
en \$_
.
DB<3> $g = gmtime DB<4> p $g Thu Mar 31 17:47:13 2005 DB<5> $c = time DB<6> p $c 1112291278 DB<7> p localtime $c 5847183121054891 DB<8> p "".localtime $c Thu Mar 31 18:47:58 2005 DB<9> p scalar(localtime $c) Thu Mar 31 18:47:58 2005 DB<10> p scalar localtime(time-(24*60*60)), "\n"; Wed Mar 30 19:14:33 2005
==
y eq
?
ok
?
is
?
is_cloudy
?
¿Y la función is_sunny
?
¿En que módulo están?
$@
?
prove
?
like
?
$#-
? ¿Y $+
?
use_ok
es llamada dentro de un BEGIN
?
SKIP
?
TODO
?
pod_file_ok
?
¿A que módulo pertenece?
tr
?
tr
?
d
de tr
?
use Test::More qw(no_plan);
?
can_ok
? ¿Qué argumentos tiene?
DB<1> $a='4+5' DB<2> print "($&) " while ($a =~ m/(\G\d+)/gc) or ($a =~ m/(\G\+)/gc); (4) (+) (5) DB<3> $a='4+5' # inicializamos la posición de búsqueda DB<4> print "($&) " while ($a =~ m/(\G\d+)/g) or ($a =~ m/(\G\+)/g); (4) DB<5> $a='4+5' DB<6> print "($&) " while ($a =~ m/\G\d+|\G\+/g) (4) (+) (5)
is_deeply
e is
?
throws_ok
?
¿En que módulo se encuentra?
HARNESS_PERL_SWITCHES=-MDevel::Cover make test
?
csh
o tcsh
?
perl -d:DProf programa
? ¿Para que sirve?
dprofpp
?
size
y total_size
del módulo Devel::Size
?
warning_like
? ¿En que módulo está?
warning_is
? ¿En que módulo está?
warning_are
? ¿En que módulo está?
Test::NoWarnings
?
throws_ok
?
¿Que hace esa función?
lives_ok
? ¿En que módulo está?
*?
?
+?
?
$a = 3.14159; my $a = 5; *b = *a; print $b;
sub mundo { "mundo\n" } *hola = \&mundo; $mundo = "hola"; $hola = "bienvenido"; print "$mundo ",&hola();
$h = *$t{HASH};¿Cuál es el tipo de
$t
? ¿Que queda en $h
?
lhp@nereida:~/Lperl/src$ cat -n mytypeglob2.pl 1 #!/usr/bin/perl -w 2 use strict; 3 4 our $a; 5 my $b; 6 7 *a = *b; 8 $a = 4; 9 print "$b\n"; lhp@nereida:~/Lperl/src$ perl -c mytypeglob2.pl Name "main::b" used only once: possible typo at mytypeglob2.pl line 7. mytypeglob2.pl syntax OK
mypush
que actúa exactamente
como lo hace push
: La llamada push @a, 4, 5, 6
empuja los elementos de la lista (4, 5, 6)
en @a
.
¿Como debería ser el prototipado de dicha subrutina?
map
.
splice
first
:
(?: ...)
?
\G
?
c
en una expresión regular?
s
en una expresión regular?
x
en una expresión regular?
m
en una expresión regular?
e
en una expresión regular?
g
en una expresión regular en un contexto de lista?
g
en una expresión regular en un contexto escalar?
$a
fue declarada en el módulo PL::Tutu::Lexical::Analyzer
,
¿Como debo declararla para accederla desde otro módulo?
$a
fue declarada en el módulo PL::Tutu::Lexical::Analyzer
,
¿Como debo accederla desde otro módulo?
$a
fue declarada en el módulo PL::Tutu::Lexical::Analyzer
,
¿Como puedo accederla sin necesidad de especificar su nombre completo?
==
y eq
?
$&
?
$`
?
$'
?
$1, $2, $3
, etc. ?
$+
?
@-
?
@+
?
$#-
?
$#+
?
tr
?
tr
?
d
de tr
?
DB<1> $a = '"Focho \"mucha\" chufa"' DB<2> print $a "Focho \"mucha\" chufa" DB<3> print $& if $a =~ m{^"([^"]|\\")*"} "Focho \" DB<4> print $& if $a =~ m{^"(\\"||[^"])*"} "Focho \"mucha\" chufa"
use Test::More qw(no_plan);
?
can_ok
? ¿Qué argumentos tiene?
DB<1> $a='4+5' DB<2> print "($&) " while ($a =~ m/(\G\d+)/gc) or ($a =~ m/(\G\+)/gc); (4) (+) (5) DB<3> $a='4+5' # inicializamos la posición de búsqueda DB<4> print "($&) " while ($a =~ m/(\G\d+)/g) or ($a =~ m/(\G\+)/g); (4) DB<5> $a='4+5' DB<6> print "($&) " while ($a =~ m/\G\d+|\G\+/g) (4) (+) (5)
$@
?
> cat dollar1slash1.pl #!/usr/bin/perl $a = "hola juanito"; $b = "adios anita"; $a =~ /(ani)/; $b =~ s/(adios) *$1/\1 boni$1/; print "$b\n"; > dollar1slash1.pl adios boniadiosta¿Que diferencia hay entre
$1
y \1
?
use Este::Modulo;¿Donde busca el fichero
Modulo.pm
?
Tutu.pm
?
MANIFEST
?
Makefile.PL
? ¿Cuál es su función?
¿Que significa la frase looks good?
Makefile
para trabajar en la plataforma
actual?
pod
?
si tiene dudas.
=head1 cabecera =head2 cabecera =item texto =over N =back =cut =pod =for X =begin X =end X
t
?
make test
los reconozca como pruebas?
package nombredepaquete
?
use 5.008004
?
use strict
?
use warnings
?
use warnings
y perl -w
?
use Carp
?
¿Que diferencia hay entre croak
y die
?
our
?
local
?
%h
de clave k
?
@a
de índice 7
?
¿Que lugar ocupa ese elemento en el array?
undef
?
my ($input) = @_;y
my $input = @_;
\$target
?.
use
y require
?
¿La línea require Exporter
se ejecuta en tiempo de compilación
o en tiempo de ejecución?
our @ISA = qw(Exporter)
?.
our @EXPORT = qw( compile compile_from_file)
?
EXPORT
Y EXPORT_OK
?.
our $VERSION = '0.01
?
=>
?.
MANIFEST.SKIP
?
¿Que hace make manifest
?
-I
?
¿Porqué la primera línea de tutu.pl
comienza:
#!/usr/bin/perl -w -I../lib/
?
lib
?
¿Qué hace la línea use lib ('../lib')
en el programa tutu
?
-r $input_name
?
$/
?
¿Que se leerá en la línea 86
85 local $/ = undef; 86 my $input = <$fhi>;
$targetref
es una referencia a una cadena
¿Cómo se denota a la cadena referenciada por $targetref
?
Explique la línea
92 $fh->print($$targetref);
@a = undef; if (@a) { &tutu(); }¿Se ejecuta
&tutu
?
l [ln|sub] T - or . s [expr] v [line] n [expr] f filename <CR/Enter> /pattern/ ?patt? r c [ln|sub] L b [ln|event|sub] [cnd] ! [N|pat] B ln|* H [-num] x|m expr p expr S [[!]pat] X [Vars] y [n [Vars]]
-w
y use warnings
?
perl -e 's/nereida\.deioc\.ull\.es/miranda.deioc.ull.es/gi' -p -i.bak *.html
=head1 Texto =head2 Texto =head3 Texto =head4 Texto =over número =item stuff =back =cut =pod =begin formato =end formato =for format texto...
pod
:
C<$a E<lt>=E<gt> $b>
Significado | |
e | |
g | |
i | |
m | |
o | |
s | |
x |
$& |
|
$` |
|
$' |
|
$1, $2, $3 , etc. |
|
$+ |
|
@- |
|
@+ |
|
$#- |
|
$#+ |
@text = (1, 2, 3, 4, 5); @text[@text] = 0;
@a = grep { defined } map { /(\d+)/; $1 } glob('/tmp/*')
eval { my ($a, $b) = (10, 0); my $c = $a / $b; }; print "$@" if $@;
lhp@nereida:~/Lperl/src$ cat -n privacy.pl 1 #!/usr/bin/perl -w 2 use strict; 3 package tutu; 4 my $a = 10; 5 6 package titi; 7 8 if (defined($tutu::a)) { print "$tutu::a\n" } 9 else { print "No esta definida \$tutu::a\n"}; 10 print "\$a = $a\n";
peer
definida en la línea 22
llama a la subrutina interior
. ¿Podría identificar
que subrutina es llamada? ¿La de la línea 5 o la de la
línea 14?
lhp@nereida:~/Lperl/src$ cat -n localsub.pl 1 #!/usr/bin/perl 2 use strict; 3 use warnings; 4 5 sub interior { 6 my $x = shift; 7 print "En sub 'interior global': $x\n"; 8 } 9 10 sub exterior { 11 my $x = $_[0]; 12 no strict 'refs'; 13 no warnings; 14 local *interior = sub { 15 print "En sub interior anidada\n"; 16 return shift() - 1 17 }; 18 print "En sub exterior. Llamo a la sub 'peer(5)'\n"; 19 peer(5); 20 } 21 22 sub peer { 23 print "En sub peer. Llamo a 'interior'\n"; 24 interior(shift())."\n"; 25 } 26 27 exterior(2); 28 interior(3);Al ejecutar el programa
localsub.pl
se produce la siguiente salida:
lhp@nereida:~/Lperl/src$ localsub.pl En sub exterior. Llamo a la sub 'peer(5)' En sub peer. Llamo a 'interior' En sub interior anidada En sub 'interior global': 3
typeglob
&
?
casiano@beowulf:~/src/perl$ perl -de 0 DB<1> require Data::Dumper DB<2> require "Data::Dumper" Can't locate Data::Dumper in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at (eval 18)[/usr/share/perl/5.8/perl5db.pl:628] line 2.Observe que el primer
require
no produce ninguna queja, el segundo si. Consulte
perldoc -f require
para entender este detalle.
DB<1> opendir D,'./' DB<2> @n = readdir D DB<3> @nd = map { {N=>$_, D=>-M $_}} @n DB<4> @snd = sort { $b->{D} <=> $a->{D} } @nd DB<5> @sn = map { $_->{N} } @snd
titi
:
lhp@nereida:~/Lperl/src$ cat -n myimport.pm 1 package myimport; 2 use strict; 3 4 sub titi { 5 print "Hola\n"; 6 } 7 8 sub import { 9 10 my ($caller_package) = caller; 11 { 12 no strict 'refs'; 13 *{"$caller_package::titi"} = \&titi; 14 } 15 } 16 17 1;El código contiene un error ¿Cual es?
package Trivial::Tutu; our @EXPORT = qw(uno dos); our @EXPORT_OK = qw(tres cuatro cinco); use Exporter; our @ISA = qw(Exporter);
Indique que es importado y que no cuando se usan las siguientes declaraciones: la exportación:
use Trivial::Tutu;
use Trivial::Tutu qw(uno dos)
use Trivial::Tutu qw(tres cinco)
use Trivial::Tutu();
use Trivial::Tutu(siete);
perl Makefile.PL
si no soy el administrador
del sistema?
o conf urllist unshift ftp://ftp.rediris.es/mirror/CPAN/ o conf commit
Tutu::Titi
?
MANIFEST
? ¿Cuál es la función del fichero
MANIFEST.SKIP
?
use strict; use Test::More tests => 11; BEGIN { use_ok('Algorithm::Knap01DP', qw/Knap01DP ReadKnap/); }
EXE_FILES
de WriteMakefile
?
&
?
use subs
?
CORE
?
CORE::GLOBAL
?
BEGIN
?
use Modulo::Interesante qw(one two);
@EXPORT
,
@EXPORT_OK
y
%EXPORT_TAGS
use NuestroModulo; use NuestroModulo qw(...); use NuestroModulo (); use NuestroModulo qw(:TAG1)
:DEFAULT
?
nereida:~> perl -MModule::CoreList -e \ 'print Module::CoreList->first_release("Data::Dumper")."\n"'
-l
de perldoc?
ExtUtils::Installed
?
¿Que devuelve $instmod->modules()
?
¿Que devuelve $inst->files($mod)
?
o conf
?
autobundle CGI Crypt::Rot13 Date::Christmas Date::Manip
?
¿Que hace el comando autobundle
?
pp
?
h2xs
? Enumera las opciones.
Liste los directorios y ficheros creados.
Makefile.PL
? ¿Que módulo usa?
EXE_FILES
de WriteMakefile.?
MANIFEST
?
Test::Kwalitee
?
Test::LectroTest
?
DB<7> $ctg = Gen { scalar localtime $tg->generate( @_ ) } DB<8> print $ctg->generate()."\n" for 1..3
lhp@nereida:~/Lperl/src/perl_testing_adn_examples/chapter_03/Algorithm-Knap01DP-0.25$ cat -n t/03lectro.t 1 use strict; 2 use Test::More; 3 use Test::LectroTest::Generator qw(:common); 4 use List::Util qw(sum); 5 6 use Algorithm::Knap01DP; 7 8 my $t = shift || 100; 9 plan tests => $t; 10 my ($C, @sol); 11 for (1..$t) { 12 my $weights = List(Int(range => [5,100], sized=>0), length => 10); 13 my @w = @{$weights->generate}; 14 my @p = @w; 15 my $set = List(Bool, length => 10); 16 do { 17 @sol = @{$set->generate}; 18 $C = sum( @w[ grep { $sol[$_] } 0..9 ] ); 19 } while ($C == 0); 20 my $knap = Algorithm::Knap01DP->new( capacity => $C, weights => \@w, profits => \@p); 21 $knap->Knap01DP(); 22 is($C, $knap->{tableval}[-1][-1], "Random subset-sum problem"); 23 }
$AUTOLOAD
?
AUTOLOAD
?
Class::Struct
?
Class::Accessor
?
List::Util
$y = 0 +$x
donde $x
es una referencia. ¿Que queda en $y
?
tutu
a la subrutina
referenciada por $x
use overload "*" => \&fmul, "+" => "fadd",
0+
?
nomethod
? ¿Con que argumentos es llamado?
fallback
?
overload
es la que permite la sobrecarga de constantes?
¿Que argumentos admite? ¿Que argumentos recibe un manejador de sobrecarga de constantes?
P5NCI
?
Inline::C
?