```{index} single: addfileuniv; Digest::SHA function ``` ```{index} single: Digest::SHA::addfileuniv; Perl function ``` # addfileuniv Feed a filehandle's contents into a `Digest::SHA` object, reading through the PerlIO text layer. The universal-newline backend behind `addfile`. On platforms where Perl performs CR/LF conversion on text streams, this mode reads the file through that conversion so the hash is platform-agnostic. On Linux the PerlIO text layer is a no-op, so on this platform `_addfileuniv` and `_addfilebin` produce identical digests. Prefer the public `addfile($fh, "U")` or `addfile($fh, "p")` wrapper in application code. ## Synopsis ```perl open my $fh, "<", "notes.txt" or die $!; $sha->_addfileuniv($fh); ``` ## What you get back The receiver, for chaining. ## Examples ```perl my $sha = Digest::SHA->new(256); open my $fh, "<", "README" or die $!; $sha->_addfileuniv($fh); print $sha->hexdigest; ``` ```perl ## Portable digest of a text file shared between Unix and Windows: my $sha = Digest::SHA->new(256); $sha->_addfileuniv("config.ini"); ``` ## Edge cases - On Linux, newline translation is inactive; the digest matches `_addfilebin` on the same file. - A bad filehandle or unreadable filename croaks with `Bad filehandle: ...`. - Called on a non-`Digest::SHA` object, returns `undef`. ## Differences from upstream Fully compatible with upstream `Digest::SHA` {{ upstream.Digest_SHA }}. ## See also - `addfile` — mode-switching wrapper; prefer it in application code. - `_addfilebin` — byte-exact binary counterpart. - `add_bits` — sub-byte input path for bit-oriented hashing.