use strict; use warnings; use Employee; use EmployeeList; use Data::Dump 'pp'; my $E1 = new Employee( {name=>'George', hours=>40, hourlywage=>50.00} ); print "What does Data::Dump see for my Employee?\n"; pp($E1); print "\nHow does it print?\n"; $E1->print_student(); #### $ perl classes.pl What does Data::Dump see for my Employee? bless({ hourlywage => 50, hours => 40, name => "George" }, "Employee") How does it print? #### $ perl classes.pl What does Data::Dump see for my Employee? bless({ hourlywage => 50, hours => 40, name => "George" }, "Employee") How does it print? Employee info: name: George hours: 40 wage: 50 #### use strict; use warnings; use Employee; use EmployeeList; use Data::Dump 'pp'; my $E1 = new Employee( {name=>'George', hours=>40, hourlywage=>50.00} ); print "What does Data::Dump see for my Employee?\n"; pp($E1); print "\nHow does it print?\n"; print $E1->format(); print "\nLet's create a couple more employees and print them:\n"; my $E2 = new Employee( {name=>'Ellen', hours=>30, hourlywage=>35.00} ); my $E3 = new Employee( {name=>'Phideaux', hours=>10, hourlywage=> 5.00} ); print $E2->format(), $E3->format(); print "\nNow we'll create an EmployeeList.", "\nWhat does Data::Dump see when it's empty?\n"; my $L = new EmployeeList(); pp($L); print "\nHow does an empty list print?\n"; print $L->format(); $L->set_EmployeeList( [ $E1, $E2, $E3 ] ); print "\nAfter adding George, Ellen and Phideaux, our list looks like:\n"; pp($L); print "\nHow does it look using the built-in formatter?\n"; print $L->format(); print "\nDoes get_EmployeeList work?\n"; pp($L->get_EmployeeList()); #### $ perl classes.pl What does Data::Dump see for my Employee? bless({ hourlywage => 50, hours => 40, name => "George" }, "Employee") How does it print? Employee info: name: George hours: 40 wage: 50 Let's create a couple more employees and print them: Employee info: name: Ellen hours: 30 wage: 35 Employee info: name: Phideaux hours: 10 wage: 5 Now we'll create an EmployeeList. What does Data::Dump see when it's empty? bless({ EmployeeList => [] }, "EmployeeList") How does an empty list print? Employee info: ARRAY(0x60028cbd8) After adding George, Ellen and Phideaux, our list looks like: bless({ EmployeeList => [ bless({ hourlywage => 50, hours => 40, name => "George" }, "Employee"), bless({ hourlywage => 35, hours => 30, name => "Ellen" }, "Employee"), bless({ hourlywage => 5, hours => 10, name => "Phideaux" }, "Employee"), ], }, "EmployeeList") How does it look using the built-in formatter? Employee info: ARRAY(0x600240278) Does get_EmployeeList work? [ bless({ hourlywage => 50, hours => 40, name => "George" }, "Employee"), bless({ hourlywage => 35, hours => 30, name => "Ellen" }, "Employee"), bless({ hourlywage => 5, hours => 10, name => "Phideaux" }, "Employee"), ] #### package EmployeeList; . . . sub format { my $self = shift; for my $anEmployee ( @{ $self->{EmployeeList} } ) { # Do something with the employee, such as: # print "current employee name is: ", $anEmployee->{name}, ".\n"; } } #### # Get a list of employees between ages 30 and 50 who make more than $25/hr my $interesting = $L->query( [ "AGE", "BETWEEN", 30, 50 ], [ "HOURLY", "ABOVE", 25 ], ); #### my $interesting = $L->filter_age( 30, 50 ) ->filter_hourly( 25, 99999999999999 );