```{index} single: advise; File::Map function ``` ```{index} single: File::Map::advise; Perl function ``` # advise Tell the kernel how the mapped region will be accessed. ## Synopsis ```perl advise $map, 'sequential'; advise $map, 'willneed'; ``` ## Arguments - `$lvalue` — a currently mapped scalar. - `$advice` — a string naming an access pattern. The portable values are: - `'normal'` — no particular pattern (the default). - `'random'` — access order is unpredictable. - `'sequential'` — read start to end once. - `'willneed'` — prefault pages that will be needed soon. - `'dontneed'` — release pages that will not be needed soon. On Linux additional values are accepted: `'remove'`, `'dontfork'`, `'dofork'`, `'mergeable'`, `'unmergeable'`, `'free'`. Unknown values are silently ignored. ## Examples Hint that a large log file will be scanned top to bottom: ```perl map_file my $log, 'huge.log'; advise $log, 'sequential'; while ($log =~ /^(ERROR:.*)/mg) { ... } ``` ## Edge cases - Advising an unmapped scalar raises an exception. - Advising an empty mapping is a no-op. - `advise` is a hint to the kernel; it may do nothing on some systems. ## Differences from upstream Fully compatible with upstream `File::Map` 0.71. ## See also - `protect` — change read/write permissions rather than access hints. - `sync` — control flush timing explicitly.