C programmers have a hard time with some of the aspects of Perl because they look similar to constructions in C but act very differently. In C, you are taught that arrays are blocks of memory and their names are just pointers. The following are equivalent in C:
a[2] *(a+2) 2[a]
In Perl, arrays are more like objects than memory. When you undef an array, you free up its data but it still remains in the symbol table. This means you can reuse it later. In Perl, the following are equivalent:
undef @arr; @arr = ();
The array doesn't go away with undef, just its data. Like in the following:
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; # Make Data::Dumper pretty $Data::Dumper::Sortkeys = 1; $Data::Dumper::Indent = 1; # Set maximum depth for Data::Dumper, zero means unlimited $Data::Dumper::Maxdepth = 0; my @arr = ( 1, 2, 3, ); print Dumper \@arr; undef @arr; print Dumper \@arr;
In reply to Re: Dangling Pointer::perl referrence
by shawnhcorey
in thread Dangling Pointer::perl referrence
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |