```{index} single: freeze; Storable function ``` ```{index} single: Storable::freeze; Perl function ``` # freeze Serialise a referenced Perl structure into an opaque byte string using the host's native byte order. ## Synopsis ```perl use Storable qw(freeze thaw); my $bytes = freeze(\%config); my $copy = thaw($bytes); ``` ## What you get back A single scalar holding the binary image of the structure. The bytes are opaque — treat them as a blob, not text. They can be stored, transmitted, or passed straight back to `thaw`. Native byte order keeps the serialisation fast but the result is only portable between machines with the same endianness and integer width; for cross-architecture transport use `nfreeze`. ## Examples Freeze and immediately thaw a hash reference: ```perl my $bytes = freeze({ host => "db1", port => 5432 }); my $cfg = thaw($bytes); print $cfg->{host}; # db1 ``` Freeze a nested structure with shared references: ```perl my $shared = [1, 2, 3]; my $bytes = freeze({ a => $shared, b => $shared }); my $h = thaw($bytes); $h->{a}[0] = 99; print $h->{b}[0]; # 99 — sharing preserved ``` Round-trip a blessed object: ```perl my $obj = bless { id => 42 }, "Widget"; my $bytes = freeze(\$obj); my $back = ${ thaw($bytes) }; # same class, same contents ``` ## Edge cases - Argument must be a reference. Passing a plain scalar croaks with `Not a reference`. - Circular references are preserved; the reader rebuilds the same cycle. - Weak references survive the round trip as weak references. ## Differences from upstream - The on-disk layout differs from upstream's format. Byte strings produced by this `freeze` can only be thawed by pperl's `Storable`, not by perl5's. The reverse also holds. Pinned by `t/81-xs-native/Storable/010-freeze-thaw.t`. ## See also - `thaw` — the matching reader. - `nfreeze` — portable (network-order) variant. - `store` — write directly to a named file. - `dclone` — freeze/thaw round-trip as a deep-copy shortcut.