⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 db-recno.t

📁 介绍:MySQL是比较出名的数据库软件
💻 T
📖 第 1 页 / 共 2 页
字号:
    $h[1] = "def" ;    $h[2] = "ghi" ;    $h[3] = "jkl" ;    ok(68, $FA ? $#h == 3 : $self->length() == 4) ;    undef $self ;    untie @h ;    my $x = docat($Dfile) ;    ok(69, $x eq "abc\ndef\nghi\njkl\n") ;    # $# sets array to same length    ok(70, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ;    if ($FA)      { $#h = 3 }    else       { $self->STORESIZE(4) }    ok(71, $FA ? $#h == 3 : $self->length() == 4) ;    undef $self ;    untie @h ;    $x = docat($Dfile) ;    ok(72, $x eq "abc\ndef\nghi\njkl\n") ;    # $# sets array to bigger    ok(73, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ;    if ($FA)      { $#h = 6 }    else       { $self->STORESIZE(7) }    ok(74, $FA ? $#h == 6 : $self->length() == 7) ;    undef $self ;    untie @h ;    $x = docat($Dfile) ;    ok(75, $x eq "abc\ndef\nghi\njkl\n\n\n\n") ;    # $# sets array smaller    ok(76, $self = tie @h, 'DB_File', $Dfile, O_RDWR, 0640, $DB_RECNO ) ;    if ($FA)      { $#h = 2 }    else       { $self->STORESIZE(3) }    ok(77, $FA ? $#h == 2 : $self->length() == 3) ;    undef $self ;    untie @h ;    $x = docat($Dfile) ;    ok(78, $x eq "abc\ndef\nghi\n") ;    unlink $Dfile;}{   # DBM Filter tests   use warnings ;   use strict ;   my (@h, $db) ;   my ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;   unlink $Dfile;   sub checkOutput   {       my($fk, $sk, $fv, $sv) = @_ ;       return           $fetch_key eq $fk && $store_key eq $sk && 	   $fetch_value eq $fv && $store_value eq $sv &&	   $_ eq 'original' ;   }      ok(79, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) );   $db->filter_fetch_key   (sub { $fetch_key = $_ }) ;   $db->filter_store_key   (sub { $store_key = $_ }) ;   $db->filter_fetch_value (sub { $fetch_value = $_}) ;   $db->filter_store_value (sub { $store_value = $_ }) ;   $_ = "original" ;   $h[0] = "joe" ;   #                   fk   sk     fv   sv   ok(80, checkOutput( "", 0, "", "joe")) ;   ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;   ok(81, $h[0] eq "joe");   #                   fk  sk  fv    sv   ok(82, checkOutput( "", 0, "joe", "")) ;   ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;   ok(83, $db->FIRSTKEY() == 0) ;   #                    fk     sk  fv  sv   ok(84, checkOutput( 0, "", "", "")) ;   # replace the filters, but remember the previous set   my ($old_fk) = $db->filter_fetch_key      			(sub { ++ $_ ; $fetch_key = $_ }) ;   my ($old_sk) = $db->filter_store_key      			(sub { $_ *= 2 ; $store_key = $_ }) ;   my ($old_fv) = $db->filter_fetch_value    			(sub { $_ = "[$_]"; $fetch_value = $_ }) ;   my ($old_sv) = $db->filter_store_value    			(sub { s/o/x/g; $store_value = $_ }) ;      ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;   $h[1] = "Joe" ;   #                   fk   sk     fv    sv   ok(85, checkOutput( "", 2, "", "Jxe")) ;   ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;   ok(86, $h[1] eq "[Jxe]");   #                   fk   sk     fv    sv   ok(87, checkOutput( "", 2, "[Jxe]", "")) ;   ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;   ok(88, $db->FIRSTKEY() == 1) ;   #                   fk   sk     fv    sv   ok(89, checkOutput( 1, "", "", "")) ;      # put the original filters back   $db->filter_fetch_key   ($old_fk);   $db->filter_store_key   ($old_sk);   $db->filter_fetch_value ($old_fv);   $db->filter_store_value ($old_sv);   ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;   $h[0] = "joe" ;   ok(90, checkOutput( "", 0, "", "joe")) ;   ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;   ok(91, $h[0] eq "joe");   ok(92, checkOutput( "", 0, "joe", "")) ;   ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;   ok(93, $db->FIRSTKEY() == 0) ;   ok(94, checkOutput( 0, "", "", "")) ;   # delete the filters   $db->filter_fetch_key   (undef);   $db->filter_store_key   (undef);   $db->filter_fetch_value (undef);   $db->filter_store_value (undef);   ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;   $h[0] = "joe" ;   ok(95, checkOutput( "", "", "", "")) ;   ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;   ok(96, $h[0] eq "joe");   ok(97, checkOutput( "", "", "", "")) ;   ($fetch_key, $store_key, $fetch_value, $store_value) = ("") x 4 ;   ok(98, $db->FIRSTKEY() == 0) ;   ok(99, checkOutput( "", "", "", "")) ;   undef $db ;   untie @h;   unlink $Dfile;}{        # DBM Filter with a closure    use warnings ;    use strict ;    my (@h, $db) ;    unlink $Dfile;    ok(100, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) );    my %result = () ;    sub Closure    {        my ($name) = @_ ;	my $count = 0 ;	my @kept = () ;	return sub { ++$count ; 		     push @kept, $_ ; 		     $result{$name} = "$name - $count: [@kept]" ;		   }    }    $db->filter_store_key(Closure("store key")) ;    $db->filter_store_value(Closure("store value")) ;    $db->filter_fetch_key(Closure("fetch key")) ;    $db->filter_fetch_value(Closure("fetch value")) ;    $_ = "original" ;    $h[0] = "joe" ;    ok(101, $result{"store key"} eq "store key - 1: [0]");    ok(102, $result{"store value"} eq "store value - 1: [joe]");    ok(103, ! defined $result{"fetch key"} );    ok(104, ! defined $result{"fetch value"} );    ok(105, $_ eq "original") ;    ok(106, $db->FIRSTKEY() == 0 ) ;    ok(107, $result{"store key"} eq "store key - 1: [0]");    ok(108, $result{"store value"} eq "store value - 1: [joe]");    ok(109, $result{"fetch key"} eq "fetch key - 1: [0]");    ok(110, ! defined $result{"fetch value"} );    ok(111, $_ eq "original") ;    $h[7]  = "john" ;    ok(112, $result{"store key"} eq "store key - 2: [0 7]");    ok(113, $result{"store value"} eq "store value - 2: [joe john]");    ok(114, $result{"fetch key"} eq "fetch key - 1: [0]");    ok(115, ! defined $result{"fetch value"} );    ok(116, $_ eq "original") ;    ok(117, $h[0] eq "joe");    ok(118, $result{"store key"} eq "store key - 3: [0 7 0]");    ok(119, $result{"store value"} eq "store value - 2: [joe john]");    ok(120, $result{"fetch key"} eq "fetch key - 1: [0]");    ok(121, $result{"fetch value"} eq "fetch value - 1: [joe]");    ok(122, $_ eq "original") ;    undef $db ;    untie @h;    unlink $Dfile;}		{   # DBM Filter recursion detection   use warnings ;   use strict ;   my (@h, $db) ;   unlink $Dfile;   ok(123, $db = tie(@h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0640, $DB_RECNO ) );   $db->filter_store_key (sub { $_ = $h[0] }) ;   eval '$h[1] = 1234' ;   ok(124, $@ =~ /^recursion detected in filter_store_key at/ );      undef $db ;   untie @h;   unlink $Dfile;}{   # Examples from the POD  my $file = "xyzt" ;  {    my $redirect = new Redirect $file ;    use warnings FATAL => qw(all);    use strict ;    use DB_File ;    my $filename = "text" ;    unlink $filename ;    my @h ;    my $x = tie @h, "DB_File", $filename, O_RDWR|O_CREAT, 0640, $DB_RECNO         or die "Cannot open file 'text': $!\n" ;    # Add a few key/value pairs to the file    $h[0] = "orange" ;    $h[1] = "blue" ;    $h[2] = "yellow" ;    $FA ? push @h, "green", "black"         : $x->push("green", "black") ;    my $elements = $FA ? scalar @h : $x->length ;    print "The array contains $elements entries\n" ;    my $last = $FA ? pop @h : $x->pop ;    print "popped $last\n" ;    $FA ? unshift @h, "white"         : $x->unshift("white") ;    my $first = $FA ? shift @h : $x->shift ;    print "shifted $first\n" ;    # Check for existence of a key    print "Element 1 Exists with value $h[1]\n" if $h[1] ;    # use a negative index    print "The last element is $h[-1]\n" ;    print "The 2nd last element is $h[-2]\n" ;    undef $x ;    untie @h ;    unlink $filename ;  }    ok(125, docat_del($file) eq <<'EOM') ;The array contains 5 entriespopped blackshifted whiteElement 1 Exists with value blueThe last element is greenThe 2nd last element is yellowEOM  my $save_output = "xyzt" ;  {    my $redirect = new Redirect $save_output ;    use warnings FATAL => qw(all);    use strict ;    use vars qw(@h $H $file $i) ;    use DB_File ;    use Fcntl ;        $file = "text" ;    unlink $file ;    $H = tie @h, "DB_File", $file, O_RDWR|O_CREAT, 0640, $DB_RECNO         or die "Cannot open file $file: $!\n" ;        # first create a text file to play with    $h[0] = "zero" ;    $h[1] = "one" ;    $h[2] = "two" ;    $h[3] = "three" ;    $h[4] = "four" ;        # Print the records in order.    #    # The length method is needed here because evaluating a tied    # array in a scalar context does not return the number of    # elements in the array.      print "\nORIGINAL\n" ;    foreach $i (0 .. $H->length - 1) {        print "$i: $h[$i]\n" ;    }    # use the push & pop methods    $a = $H->pop ;    $H->push("last") ;    print "\nThe last record was [$a]\n" ;    # and the shift & unshift methods    $a = $H->shift ;    $H->unshift("first") ;    print "The first record was [$a]\n" ;    # Use the API to add a new record after record 2.    $i = 2 ;    $H->put($i, "Newbie", R_IAFTER) ;    # and a new record before record 1.    $i = 1 ;    $H->put($i, "New One", R_IBEFORE) ;    # delete record 3    $H->del(3) ;    # now print the records in reverse order    print "\nREVERSE\n" ;    for ($i = $H->length - 1 ; $i >= 0 ; -- $i)      { print "$i: $h[$i]\n" }    # same again, but use the API functions instead    print "\nREVERSE again\n" ;    my ($s, $k, $v)  = (0, 0, 0) ;    for ($s = $H->seq($k, $v, R_LAST) ;              $s == 0 ;              $s = $H->seq($k, $v, R_PREV))      { print "$k: $v\n" }    undef $H ;    untie @h ;        unlink $file ;  }    ok(126, docat_del($save_output) eq <<'EOM') ;ORIGINAL0: zero1: one2: two3: three4: fourThe last record was [four]The first record was [zero]REVERSE5: last4: three3: Newbie2: one1: New One0: firstREVERSE again5: last4: three3: Newbie2: one1: New One0: firstEOM   }{    # Bug ID 20001013.009    #    # test that $hash{KEY} = undef doesn't produce the warning    #     Use of uninitialized value in null operation     use warnings ;    use strict ;    use DB_File ;    unlink $Dfile;    my @h ;    my $a = "";    local $SIG{__WARN__} = sub {$a = $_[0]} ;        tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO 	or die "Can't open file: $!\n" ;    $h[0] = undef;    ok(127, $a eq "") ;    untie @h ;    unlink $Dfile;}{    # test that %hash = () doesn't produce the warning    #     Argument "" isn't numeric in entersub    use warnings ;    use strict ;    use DB_File ;    my $a = "";    local $SIG{__WARN__} = sub {$a = $_[0]} ;    unlink $Dfile;    my @h ;        tie @h, 'DB_File', $Dfile, O_RDWR|O_CREAT, 0664, $DB_RECNO 	or die "Can't open file: $!\n" ;    @h = (); ;    ok(128, $a eq "") ;    untie @h ;    unlink $Dfile;}exit ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -