I got the following error when u changed the foreach loop to yours:
Please enter a string
apple
Use of uninitialized value $data in hash element at p3task6.pl line 30
+, <STDIN> line 2.
Use of uninitialized value in string eq at p3task6.pl line 30, <STDIN>
+ line 2.
Use of uninitialized value $data in hash element at p3task6.pl line 30
+, <STDIN> line 2.
Use of uninitialized value in string eq at p3task6.pl line 30, <STDIN>
+ line 2.
Use of uninitialized value $data in hash element at p3task6.pl line 30
+, <STDIN> line 2.
Use of uninitialized value in string eq at p3task6.pl line 30, <STDIN>
+ line 2.
Use of uninitialized value $data in hash element at p3task6.pl line 30
+, <STDIN> line 2.
Use of uninitialized value in string eq at p3task6.pl line 30, <STDIN>
+ line 2.
Use of uninitialized value $data in hash element at p3task6.pl line 30
+, <STDIN> line 2.
Use of uninitialized value in string eq at p3task6.pl line 30, <STDIN>
+ line 2.
Use of uninitialized value $data in hash element at p3task6.pl line 30
+, <STDIN> line 2.
Use of uninitialized value in string eq at p3task6.pl line 30, <STDIN>
+ line 2.
Use of uninitialized value $data in hash element at p3task6.pl line 30
+, <STDIN> line 2.
Use of uninitialized value in string eq at p3task6.pl line 30, <STDIN>
+ line 2.
Use of uninitialized value $data in hash element at p3task6.pl line 30
+, <STDIN> line 2.
Use of uninitialized value in string eq at p3task6.pl line 30, <STDIN>
+ line 2.
Please enter a string