An example of reading and writing hdf files, using a perl program (hdfgen.pl) to help accomplish this. The program hdfgen.pl takes a C-structure as input and generates all the HDF calls needed to read and write a full C structure. The user interacts with the data at the level of read_Cstruct, write_Cstruct instead of the more detailed level that HDF requires. We are using HDF 4.1r2 and perl 5.005_02. To use this system you will need to have the HDF libraries and perl installed on your system. HDF is available from: http://hdf.ncsa.uiuc.edu/ The source code for perl is at: http://perl.com/perl/info/software.html The ingredients are: structure.h A header file that contains a c structure. hdfgen.pl A perl program that uses the struct in structure.h to create functions that simplify creating read and write code for hdf files. In this example it will create the file: hdf_test.c wr_test.c Simple write code that uses the functions in hdf_test.c generated by hdfgen.pl to write a data file in hdf format. rd_test.c Simple read code that uses the functions in hdf_test.c generated by hdfgen.pl to read a data file in hdf format. You will need to change some items in the Makefile to get the programs to compile. HDFHOME is one, and you may need to change the compiler to something else if you don't have gcc. Then compile the code using the Makefile (type make). Typing, 'wr_test Ex1.hdf' will run the writing program and will create an HDF file named Ex1.hdf. Typing, 'rd_test Ex1.hdf' will run the reading program and will output the written data to the screen. The structure is defined in the structure.h file and is what all the HDF data IO is based on. If there is a question about the structures let us know. If you don't use the GNU version of make, this makefile may not work for you. The shorthand values $^ and $< mean 'all the dependency items' and 'the first listed dependency item' respectively. The value $@ is equivalent to the object to be made. In gmake: test: test.o test2.o $@ = test $^ = test.o test2.o $< = test.o
Back to ASC Home Page