diff -ur Storable-0.5@0/Storable.pm Storable-0.5/Storable.pm
--- Storable-0.5@0/Storable.pm	Mon Jun 23 02:03:26 1997
+++ Storable-0.5/Storable.pm	Mon Jun 23 01:57:29 1997
@@ -62,6 +62,7 @@
 	croak "Too many arguments" unless @_ == 1;	# Watch out for @foo in arglist
 	local *FILE;
 	open(FILE, ">$file") || croak "Can't create $file: $!";
+	binmode FILE;
 	my $ret;
 	# Call C routine nstore or pstore, depending on network order
 	eval { $ret = $netorder ? net_pstore(FILE, $self) : pstore(FILE, $self) };
@@ -148,6 +149,7 @@
 	my ($file) = @_;
 	local *FILE;
 	open(FILE, "$file") || croak "Can't open $file: $!";
+	binmode FILE;
 	my $self;
 	eval { $self = pretrieve(FILE) };		# Call C routine
 	close(FILE);
@@ -315,6 +317,9 @@
 references, will probably differ from the original addresses. The
 topology of your structure is preserved, but not hidden semantics
 like those.
+
+On platforms where it matters, be sure to call C<binmode()> on the
+descriptors that you pass to Storable functions.
 
 =head1 BUGS
 
diff -ur Storable-0.5@0/t/store.t Storable-0.5/t/store.t
--- Storable-0.5@0/t/store.t	Mon Jun 23 02:03:26 1997
+++ Storable-0.5/t/store.t	Mon Jun 23 02:01:52 1997
@@ -60,6 +60,7 @@
 
 print "not " unless open(OUT, '>>t/store');
 print "ok 7\n";
+binmode OUT;
 
 print "not " unless defined store_fd(\@a, ::OUT);
 print "ok 8\n";
@@ -72,6 +73,7 @@
 print "ok 11\n";
 
 print "not " unless open(OUT, 't/store');
+binmode OUT;
 
 $r = retrieve_fd(::OUT);
 print "not " unless defined $r;
