use warnings; use Inline C => <<'EOC'; #define DSZ 108 struct stud { char name[100]; int roll_no; }; struct student { struct stud s; int grade; }value; void foo(char * fn) { FILE *fps; int n; struct student *buffer=(struct student*)malloc(sizeof(struct student)); fps=fopen(fn,"rb"); n=fread(buffer,DSZ,1,fps); printf("Name:%s Grade:%d NO:%d\n",buffer->s.name,buffer->grade,buffer->s.roll_no); fclose(fps); } EOC foo("Myfile"); # outputs: # Name:myname Grade:1 NO:149