PDL list,

Perl 5.20 has copy-on-write (cow) enabled by default. This feature
means that copying for example one string to another

$str2 = $str1;

does not do the copying, but delays it until a perl operator alters 
$str2. This again means that if a C-routine linked to Perl modifies 
$str2, then the changes appear in $str1. That can be prevented 
by forcing it at the C-level by using the Perl API, but often it is not
possible or even a good idea to modify, say, someone else's 
C-library. I have not found a Perl way to force the copy, except by 
doing silly things like this,

$str2 .= "";

or compiling with -Accflags='-DPERL_NO_COW', an option which is
to be removed, they say. There ought to be a run-time configure 
option that changes the behaviour, or some other way at the Perl
level. This cow-thing hits my mixed Perl/C code badly, but is PDL
affected too? 

I have not yet reported the problem and found no complaints with
Google, so maybe I missed something. Or have the Perl people
forgotten about Inline .. ? 

Niels L



_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to