If there are any problems with this module, read the README first. Checking if your kit is complete... Looks good Writing Makefile for XBase cp lib/DBD/XBase.pm blib/lib/DBD/XBase.pm cp lib/XBase/Memo.pm blib/lib/XBase/Memo.pm cp lib/XBase/SQL.pm blib/lib/XBase/SQL.pm cp lib/XBase/SDBM.pm blib/lib/XBase/SDBM.pm cp lib/XBase/Base.pm blib/lib/XBase/Base.pm cp lib/XBase/FAQ.pod blib/lib/XBase/FAQ.pod cp lib/XBase.pm blib/lib/XBase.pm cp lib/XBase/Index.pm blib/lib/XBase/Index.pm /Users/cpanrun/build/5.10.0/bin/perl "-Iblib/arch" "-Iblib/lib" bin/dbfdump.PL bin/dbfdump Extracting bin/dbfdump (with #! and variable substitution) cp bin/dbfdump blib/script/dbfdump /Users/cpanrun/build/5.10.0/bin/perl "-MExtUtils::MY" -e "MY->fixin(shift)" blib/script/dbfdump /Users/cpanrun/build/5.10.0/bin/perl "-Iblib/arch" "-Iblib/lib" bin/indexdump.PL bin/indexdump Extracting bin/indexdump (with #! and variable substitution) cp bin/indexdump blib/script/indexdump /Users/cpanrun/build/5.10.0/bin/perl "-MExtUtils::MY" -e "MY->fixin(shift)" blib/script/indexdump Manifying blib/man1/dbfdump.1 Manifying blib/man1/indexdump.1 Manifying blib/man3/DBD::XBase.3 Manifying blib/man3/XBase::Memo.3 Manifying blib/man3/XBase.3 Manifying blib/man3/XBase::Index.3 Manifying blib/man3/XBase::SDBM.3 Manifying blib/man3/XBase::FAQ.3 Manifying blib/man3/XBase::Base.3 PERL_DL_NONLAZY=1 /Users/cpanrun/build/5.10.0/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(1, 'blib/lib', 'blib/arch')" t/*.t t/1_header.............1..10 Load the module: use XBase Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 4) line 1. Constant subroutine O_BINARY redefined at (eval 4) line 1. ok 1 This is XBase version 0.241 Create the new XBase object, load the data from table test.dbf ok 2 Now, look into the object and check, if it has been filled OK ok 3 Check the field names ok 4 Get verbose header info (using header_info) ok 5 Check if loading table that doesn't exist will produce error ok 6 Check the returned error message ok 7 Load table without specifying the .dbf suffix ok 8 If all tests in this file passed, the module works to such an extend that new XBase loads the table and correctly parses the information in the file header. Now reload with recompute_lastrecno ok 9 ok 10 ok t/2_read...............1..9 Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 4) line 1. Constant subroutine O_BINARY redefined at (eval 4) line 1. Load the module: use XBase ok 1 Load table test.dbf ok 2 Read the records, one by one ok 3 Get record 0 as hash ok 4 Load the table rooms ok 5 Check the records using read_record ok 6 Check the records using get_all_records ok 7 Check if reading record that doesn't exist will produce error ok 8 Check error message ok 9 If all tests in this file passed, reading of the dbf data seems correct, including the dbt memo file. ok t/2_read_stream........1..5 Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 4) line 1. Constant subroutine O_BINARY redefined at (eval 4) line 1. Load the module: use XBase ok 1 Set XBase::Base::SEEK_VIA_READ(1) Load table test.dbf ok 2 Load the records, one by one ok 3 And now will read a dbf from filehandle. ok 4 ok 5 ok t/2_write..............1..11 Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 4) line 1. Constant subroutine O_BINARY redefined at (eval 4) line 1. Load the module: use XBase ok 1 Unlink write.dbf and write.dbt, make a copy of test.dbf and test.dbt ok 2 Load the table write.dbf ok 3 Check the last record number (number of records, in fact) ok 4 Overwrite the record and check it back ok 5 Did last record number stay the same? ok 6 Now append data and read them back ok 7 Now the number of records should have increased ok 8 Load the table write1.dbf ok 9 Append one record ok 10 Check the size of the resulting fpt ok 11 ok t/3_create_drop........1..11 Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 4) line 1. Constant subroutine O_BINARY redefined at (eval 4) line 1. Load the module: use XBase ok 1 Unlinking newtable.dbf and newtable.dbt Create new table, newtable.dbf & newtable.dbt, with types C M D F L ok 2 Check if both (dbf and dbt) files were created ok 3 ok 4 Check their lengths (expect 194 and 512) ok 5 ok 6 Now, fill two records ok 7 ok 8 Check the header of the newly created table ok 9 Drop the table ok 10 Check if the files newtable.dbf and newtable.dbt have been deleted ok 11 ok t/4_dbfdump............1..2 Running dbfdump rooms.dbf: /Users/cpanrun/build/5.10.0/bin/perl -I/Users/cpanrun/depot/main/contrib-patched/perl/CPAN/src/DBD-XBase/blib/arch -I/Users/cpanrun/depot/main/contrib-patched/perl/CPAN/src/DBD-XBase/blib/lib -I/sw/lib/perl5 -I/sw/lib/perl5/darwin -I/Users/cpanrun/build/5.10.0/site/lib -I/Users/cpanrun/build/5.10.0/lib -I. ./blib/script/dbfdump "./t/rooms.dbf" Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 4) line 1. Constant subroutine O_BINARY redefined at (eval 4) line 1. ok 1 Running stdin dbfdump < rooms.dbf: /Users/cpanrun/build/5.10.0/bin/perl -I/Users/cpanrun/depot/main/contrib-patched/perl/CPAN/src/DBD-XBase/blib/arch -I/Users/cpanrun/depot/main/contrib-patched/perl/CPAN/src/DBD-XBase/blib/lib -I/sw/lib/perl5 -I/sw/lib/perl5/darwin -I/Users/cpanrun/build/5.10.0/site/lib -I/Users/cpanrun/build/5.10.0/lib -I. ./blib/script/dbfdump -- - < "./t/rooms.dbf" Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 4) line 1. Constant subroutine O_BINARY redefined at (eval 4) line 1. ok 2 ok t/5_cdx................1..9 Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 4) line 1. Constant subroutine O_BINARY redefined at (eval 4) line 1. Load the module: use XBase ok 1 Open table t/rooms ok 2 prepare_select_with_index on ROOMNAME ok 3 Fetch all data None ADR-Foley Audio AVID Main BAY 7 Main Bay 1 Main Bay 2 Main Bay 3 Main Bay 4 Main Bay 5 Main Bay 6 Main Bay 8 Main Bay 10 Main Bay 11 Main Bay 12 Main Bay 14 Main Bay 15 Main Bay 16 Main Bay 17 Main Bay 18 Main Bay 19 Main BullPen Film Celco Film Dub Main FILM 1 Film FILM 2 Film FILM 3 Film Flambe Audio Gigapix Main MacGrfx Main Mach Rm Audio Mix A Audio Mix B Audio Mix C Audio Mix D Audio Mix E Audio Mix F Audio Mix G Audio Mix H Audio Mix J Audio SCANNING Film Transfer Audio ok 4 find_eq('Celco') and fetch ok 5 find_eq('Celca') and fetch (it doesn't exist, so the result should be the same) ok 6 prepare_select_with_index on FACILITY ok 7 find_eq('Film') and fetch ok 8 find_eq('Main') and fetch ok 9 ok t/5_idx................1..6 Load modules: use XBase; use XBase::Index; Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 4) line 1. Constant subroutine O_BINARY redefined at (eval 4) line 1. ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok t/5_ndx................1..12 Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 4) line 1. Constant subroutine O_BINARY redefined at (eval 4) line 1. Load the module: use XBase ok 1 Open table t/ndx-char ok 2 prepare_select_with_index ok 3 Fetch all data ok 4 find_eq('6g') and fetch ok 5 find_eq('6e') and fetch (it doesn't exist, so the result should be the same) ok 6 Before we look at the numeric and data index files, let's check if it makes sense (because of the way we implement double floats ;-) Looks good. Open ndx-num and index ok 7 ok 8 find_eq(1042) and fetch results ok 9 Open ndx-date and index ok 10 ok 11 find_eq(2450795), which is Julian date for 1997/12/12 and fetch results ok 12 ok t/5_ntx................1..66 Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 4) line 1. Constant subroutine O_BINARY redefined at (eval 4) line 1. Load the module: use XBase ok 1 Open table t/ntx-char ok 2 prepare_select ok 3 fetch all rows and sort them ok 4 prepare_select_with_index t/ntx-char.ntx ok 5 ok 6 find_eq(1) ok 7 compare results ok 8 find_eq(10) ok 9 compare results ok 10 find_eq(15) ok 11 compare results ok 12 find_eq(1w) ok 13 compare results ok 14 find_eq(1z) ok 15 compare results ok 16 find_eq(2) ok 17 compare results ok 18 find_eq(2h) ok 19 compare results ok 20 find_eq(2w) ok 21 compare results ok 22 find_eq(2z) ok 23 compare results ok 24 find_eq(3) ok 25 compare results ok 26 find_eq(3a) ok 27 compare results ok 28 find_eq(3w) ok 29 compare results ok 30 find_eq(4) ok 31 compare results ok 32 find_eq(4e) ok 33 compare results ok 34 find_eq(4w) ok 35 compare results ok 36 find_eq(5) ok 37 compare results ok 38 find_eq(5b) ok 39 compare results ok 40 find_eq(5w) ok 41 compare results ok 42 find_eq(6) ok 43 compare results ok 44 find_eq(6g) ok 45 compare results ok 46 find_eq(6w) ok 47 compare results ok 48 find_eq(7) ok 49 compare results ok 50 find_eq(7w) ok 51 compare results ok 52 find_eq(8) ok 53 compare results ok 54 find_eq(8d) ok 55 compare results ok 56 find_eq(8w) ok 57 compare results ok 58 find_eq(9) ok 59 compare results ok 60 find_eq(9g) ok 61 compare results ok 62 find_eq(9h) ok 63 compare results ok 64 find_eq(9w) ok 65 compare results ok 66 ok t/5_sdbm...............1..9 Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 4) line 1. Constant subroutine O_BINARY redefined at (eval 4) line 1. Load the module: use XBase ok 1 Open table t/rooms ok 2 Create SDBM index room on ROOMNAME ok 3 prepare_select_with_index on ROOMNAME seems fine Fetch all data ok 4 find_eq('Celco') and fetch ok 5 find_eq('Celca') and fetch (it doesn't exist, so the result should be the same) ok 6 prepare_select_with_index on FACILITY ok 7 find_eq('Film') and fetch ok 8 find_eq('Main') and fetch ok 9 ok t/6_attach_cdx.........1..7 Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 4) line 1. Constant subroutine O_BINARY redefined at (eval 4) line 1. Load the module: use XBase ok 1 Unlink write.dbf and write.dbt, make a copy of test.dbf and test.dbt ok 2 Open table t/rooms1 ok 3 Attach indexfile t/rooms1.cdx ok 4 Delete record 26: Dub:Main ok 5 Undelete record 26: Dub:Main ok 6 Append record: Krtek:Jezek ok 7 ok t/7_dbd_select.........1..45 DBI loaded ok 1 Connect to dbi:XBase:t Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 9) line 1. Constant subroutine O_BINARY redefined at (eval 9) line 1. ok 2 Prepare command `select ID, MSG from test' ok 3 Execute it ok 4 And get two lines Got: 1:Record no 1 ok 5 Got: 3:Message no 3 ok 6 Got empty list ok 7 Check attributes NAME, TYPE, PRECISION ok 8 Prepare command `select * from rooms where facility = 'Audio' or roomname > 'B'' ok 9 Execute it ok 10 And now get the result ok 11 Check attributes NAME, TYPE, PRECISION ok 12 Prepare command `select * from rooms where facility = ? or roomname > ?' ok 13 Execute it with bind parameters ('Audio', 'B') ok 14 And now get the result ok 15 Prepare command `select facility,roomname from rooms where roomname > ? or facility = ? order by roomname' ok 16 Execute it with bind parameters ('F', 'Audio') ok 17 And now get the result ok 18 Prepare select * from rooms where roomname like ? ok 19 Execute it with parameter '%f%' ok 20 And now get the result ok 21 Prepare select * from rooms where facility like ? and roomname not like ? ok 22 Execute it with parameters '%o', 'mi%' ok 23 And now get the result ok 24 Prepare select facility, roomname from rooms where (facility = :fac or facility = :fac1) and roomname not like :name ok 25 Bind named parameters: Film, Main, Bay% ok 26 And now get the result ok 27 Check attributes NAME, TYPE, PRECISION ok 28 Prepare select facility, roomname from rooms where roomname like :bay or facility = :film ok 29 Bind named parameters in execute call ok 30 And now get the result ok 31 Prepare select (id + 9) / 3, msg message, dates as Datum from test where id > 2 + ? ok 32 Bind -1 (to make it into id > 1) ok 33 Check the names of the fields to return ok 34 Fetch the resulting row ok 35 Prepare select * from test order by id ok 36 Execute it ok 37 And now get the result ok 38 Prepare command `select facility,roomname from rooms where roomname > ? or facility = ? order by facility DESC, roomname' ok 39 Execute it with bind parameters ('F', 'Audio') ok 40 And now get the result ok 41 Prepare select * from test where msg = ? order by id ok 42 Execute it with parameter ('Message no 3') ok 43 And now get the result ok 44 selectrow_array select test.msg from test where test.id = ? with 3 ok 45 ok t/7_dbd_select_func....1..31 DBI loaded ok 1 Connect to dbi:XBase:t Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 9) line 1. Constant subroutine O_BINARY redefined at (eval 9) line 1. ok 2 Prepare command `select ID, MSG from test' ok 3 Test the NAME attribute of the sth ok 4 Execute the command ok 5 Read the data and test them ok 6 Prepare command `select ID cislo, ID + 1, ID - ? from test' ok 7 Test the NAME attribute of the sth ok 8 Execute the command with value 5 ok 9 Read the data and test them ok 10 Prepare command `select 1 jedna, id, ? parametr from test where id = ?' ok 11 Test the NAME attribute of the sth ok 12 Execute the command with values 8, 3 ok 13 Read the data and test them ok 14 Prepare command `select id, length(msg), msg txt from test where id < ?' ok 15 Test the NAME attribute of the sth ok 16 Execute the command with value 4 ok 17 Read the data and test them ok 18 Execute the command with value 16 ok 19 Read the data and test them (note that with bind params, it's string) ok 20 Prepare command `select (id + 5) || msg str, msg || ' datum ' || dates from test' ok 21 Test the NAME attribute of the sth ok 22 Execute the command ok 23 Read the data and test them ok 24 Prepare command `select concat(45, ' jezek', '-krtek') from test where id = 1' ok 25 Execute the command ok 26 Read the data and test them ok 27 Prepare command `select substr('jezek leze', 3, 7) cast, substring(trim(' krtek '), 0, 3) from test where id = 1' ok 28 Test the NAME attribute of the sth ok 29 Execute the command ok 30 Read the data and test them ok 31 ok t/8_dbd_delete.........1..7 DBI loaded ok 1 Unlinking write.dbf write.dbt We will make a copy of database files rooms.dbf Will use File::Copy ok 2 Connect to dbi:XBase:t Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 10) line 1. Constant subroutine O_BINARY redefined at (eval 10) line 1. ok 3 Prepare command `delete from write where facility != "Audio"' ok 4 Execute it ok 5 And now we should check if it worked Prepare and execute 'select * from write' ok 6 ok 7 ok t/8_dbd_insert.........1..9 DBI loaded ok 1 Unlinking write.dbf write.dbt We will make a copy of database files rooms.dbf Will use File::Copy ok 2 Connect to dbi:XBase:t Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 10) line 1. Constant subroutine O_BINARY redefined at (eval 10) line 1. ok 3 Prepare command `insert into write values ("new room", "new facility")' ok 4 Execute it ok 5 Prepare command `insert into write ( facility ) values ("Lights")' ok 6 Execute it ok 7 And now we should check if it worked Prepare and execute 'select * from write' ok 8 ok 9 Preparing insert into write(facility,roomname) values (?,?) ok t/8_dbd_update.........1..10 DBI loaded ok 1 Unlinking write.dbf write.dbt We will make a copy of database files rooms.dbf Will use File::Copy ok 2 Connect to dbi:XBase:t Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 10) line 1. Constant subroutine O_BINARY redefined at (eval 10) line 1. ok 3 Prepare command `update write set roomname = "ABC" where facility != "Audio"' ok 4 Execute it ok 5 And now we should check if it worked Prepare and execute 'select * from write' ok 6 ok 7 Now prepare update with bind parameters Command: update write set roomname = ?, facility = ? where facility = ? and roomname = ? ok 8 Execute it with 'Jezek', 'Krtek', 'Film', 'ABC' ok 9 Now check the result back ok 10 ok t/9_dbd_create.........1..12 DBI loaded ok 1 Unlinking newtable.dbf and newtable.dbt ok 2 Connect to dbi:XBase:t Prototype mismatch: sub XBase::Base::O_BINARY () vs none at (eval 9) line 1. Constant subroutine O_BINARY redefined at (eval 9) line 1. ok 3 Prepare command `create table newtable (name char(15), comment memo, uid date, float float(6,2), active boolean)' ok 4 Execute it ok 5 Check if both (dbf and dbt) files were created ok 6 ok 7 Check the new table using core XBase.pm Do new XBase('newtable') ok 8 Check the header of the newly created table ok 9 Will select from the newtable table. ok 10 Will drop the newtable table. ok 11 Will select from the newtable table (should fail). ok 12 ok All tests successful. Files=18, Tests=271, 4 wallclock secs ( 3.02 cusr + 0.72 csys = 3.74 CPU) Installing /Users/cpanrun/build/5.10.0/html/bin/dbfdump.html Installing /Users/cpanrun/build/5.10.0/html/bin/indexdump.html Installing /Users/cpanrun/build/5.10.0/html/site/lib/XBase.html Installing /Users/cpanrun/build/5.10.0/html/site/lib/DBD/XBase.html Installing /Users/cpanrun/build/5.10.0/html/site/lib/XBase/Base.html Installing /Users/cpanrun/build/5.10.0/html/site/lib/XBase/FAQ.html Installing /Users/cpanrun/build/5.10.0/html/site/lib/XBase/Index.html Installing /Users/cpanrun/build/5.10.0/html/site/lib/XBase/Memo.html Installing /Users/cpanrun/build/5.10.0/html/site/lib/XBase/SDBM.html Installing /Users/cpanrun/build/5.10.0/site/lib/XBase.pm Installing /Users/cpanrun/build/5.10.0/site/lib/DBD/XBase.pm Installing /Users/cpanrun/build/5.10.0/site/lib/XBase/Base.pm Installing /Users/cpanrun/build/5.10.0/site/lib/XBase/FAQ.pod Installing /Users/cpanrun/build/5.10.0/site/lib/XBase/Index.pm Installing /Users/cpanrun/build/5.10.0/site/lib/XBase/Memo.pm Installing /Users/cpanrun/build/5.10.0/site/lib/XBase/SDBM.pm Installing /Users/cpanrun/build/5.10.0/site/lib/XBase/SQL.pm Installing /Users/cpanrun/build/5.10.0/site/man/man1/dbfdump.1 Installing /Users/cpanrun/build/5.10.0/site/man/man1/indexdump.1 Installing /Users/cpanrun/build/5.10.0/site/man/man3/DBD::XBase.3 Installing /Users/cpanrun/build/5.10.0/site/man/man3/XBase.3 Installing /Users/cpanrun/build/5.10.0/site/man/man3/XBase::Base.3 Installing /Users/cpanrun/build/5.10.0/site/man/man3/XBase::FAQ.3 Installing /Users/cpanrun/build/5.10.0/site/man/man3/XBase::Index.3 Installing /Users/cpanrun/build/5.10.0/site/man/man3/XBase::Memo.3 Installing /Users/cpanrun/build/5.10.0/site/man/man3/XBase::SDBM.3 Installing /Users/cpanrun/build/5.10.0/site/bin/dbfdump Installing /Users/cpanrun/build/5.10.0/site/bin/indexdump Appending installation info to /Users/cpanrun/build/5.10.0/lib/perllocal.pod