On Fri, Jun 16, 2006 at 12:43:11PM +0530, Rajanikanth Dandamudi wrote: > Hi All, > > Can some one help me understand why I am getting the following message > on the following perl program : > > perl program > ============ > #!/usr/local/bin/perl > > %hsh = ( > ABC => -abc, > DEF => -def, > ); > > for $key (keys %hsh){ > print "Key = $key Value = $hsh{$key}\n"; > } > ============= > > command used : perl -MDevel::Cover <aboveProgram> > > output: > ======= > Devel::Cover 0.55: Collecting coverage data for branch, condition, > statement, subroutine and time. > Pod coverage is unvailable. Please install Pod::Coverage from CPAN. > Selecting packages matching: > Ignoring packages matching: > /Devel/Cover[./] > Ignoring packages in: > . > /proj/dite/WorkArea/Raja/perl/lib > /proj/dite/WorkArea/Raja/perl/lib/5.8.8 > /proj/dite/WorkArea/Raja/perl/lib/5.8.8/i686-linux > /proj/dite/WorkArea/Raja/perl/lib/site_perl > /proj/dite/WorkArea/Raja/perl/lib/site_perl/5.8.8 > /proj/dite/WorkArea/Raja/perl/lib/site_perl/5.8.8/i686-linux > Key = ABC Value = -abc > Key = DEF Value = -def > Devel::Cover: Can't find file "../../lib/Storable.pm": ignored. > Devel::Cover: Writing coverage database to > /sp/dftm/Activities/MemoryBIST/pbist/flow/data/cover_db/runs/1150441786.22790.00593 > ----------------------------------- ------ ------ ------ ------ ------ > ------ > File stmt bran cond sub time > total > ----------------------------------- ------ ------ ------ ------ ------ > ------ > ...6905/LearnPerl/Hash_Example_2.pl 100.0 n/a n/a n/a 100.0 > 100.0 > Total 100.0 n/a n/a n/a 100.0 > 100.0 > ----------------------------------- ------ ------ ------ ------ ------ > ------ > ========= > > I couldn't understand what the following message means : > > Devel::Cover: Can't find file "../../lib/Storable.pm": ignored. > > Even though this is being ignored here, this is causing problems down > the line. Can you help me on what this means and how to overcome this ?
What it means is that when Devel::Cover went to examine all the data it had collected and map it back to reality, it went looking for the source code to Storable. When perl first loaded Storable it was found in the relative directory "../../lib/Storable.pm". What that was relative to, we don't really know. Perl doesn't store that information. Devel::Cover tries very hard to find that information (I won't go into the details, but it is messy), but doesn't always succeed. In particular, this warning is fairly common, and I haven't been able to track it down, though I suspect it has something to do with Storable being used by Devel::Cover itself and so it is loaded before Devel::Cover's hacks get a chance to kick in. What this means in practice is that you won't get a coverage report for Storable. But it's pretty unlikely you wanted one anyway, so this shouldn't be a great problem. So I am interested in what problems this causes down the line. To stop the warning I suggest the following options: 1. Fix Devel::Cover. Go on, please. You know you want to ;-) 2. Hack the source to disable the warning. 3. Filter the output. 4. Pretend you didn't see it. Most people take the fourth option since it really shouldn't cause any further problems. -- Paul Johnson - [EMAIL PROTECTED] http://www.pjcj.net