3 # Note that some additional FileHandle methods are defined in POSIX.pm.
13 output_field_separator
14 output_record_separator
15 input_record_separator
22 format_line_break_characters
33 local($old) = select($_[0]);
34 local($prev) = $OUTPUT_AUTOFLUSH;
35 $OUTPUT_AUTOFLUSH = @_ > 1 ? $_[1] : 1;
40 sub output_field_separator {
41 local($old) = select($_[0]);
42 local($prev) = $OUTPUT_FIELD_SEPARATOR;
43 $OUTPUT_FIELD_SEPARATOR = $_[1] if @_ > 1;
48 sub output_record_separator {
49 local($old) = select($_[0]);
50 local($prev) = $OUTPUT_RECORD_SEPARATOR;
51 $OUTPUT_RECORD_SEPARATOR = $_[1] if @_ > 1;
56 sub input_record_separator {
57 local($old) = select($_[0]);
58 local($prev) = $INPUT_RECORD_SEPARATOR;
59 $INPUT_RECORD_SEPARATOR = $_[1] if @_ > 1;
64 sub input_line_number {
65 local($old) = select($_[0]);
66 local($prev) = $INPUT_LINE_NUMBER;
67 $INPUT_LINE_NUMBER = $_[1] if @_ > 1;
72 sub format_page_number {
73 local($old) = select($_[0]);
74 local($prev) = $FORMAT_PAGE_NUMBER;
75 $FORMAT_PAGE_NUMBER = $_[1] if @_ > 1;
80 sub format_lines_per_page {
81 local($old) = select($_[0]);
82 local($prev) = $FORMAT_LINES_PER_PAGE;
83 $FORMAT_LINES_PER_PAGE = $_[1] if @_ > 1;
88 sub format_lines_left {
89 local($old) = select($_[0]);
90 local($prev) = $FORMAT_LINES_LEFT;
91 $FORMAT_LINES_LEFT = $_[1] if @_ > 1;
97 local($old) = select($_[0]);
98 local($prev) = $FORMAT_NAME;
99 $FORMAT_NAME = $_[1] if @_ > 1;
104 sub format_top_name {
105 local($old) = select($_[0]);
106 local($prev) = $FORMAT_TOP_NAME;
107 $FORMAT_TOP_NAME = $_[1] if @_ > 1;
112 sub format_line_break_characters {
113 local($old) = select($_[0]);
114 local($prev) = $FORMAT_LINE_BREAK_CHARACTERS;
115 $FORMAT_LINE_BREAK_CHARACTERS = $_[1] if @_ > 1;
120 sub format_formfeed {
121 local($old) = select($_[0]);
122 local($prev) = $FORMAT_FORMFEED;
123 $FORMAT_FORMFEED = $_[1] if @_ > 1;
129 # --- cacheout functions ---
131 # Open in their package.
134 my $pack = caller(1);
135 open(*{$pack . '::' . $_[0]}, $_[1]);
139 my $pack = caller(1);
140 close(*{$pack . '::' . $_[0]});
143 # But only this sub name is visible to them.
147 if (!$cacheout_maxopen){
148 if (open(PARAM,'/usr/include/sys/param.h')) {
151 $cacheout_maxopen = $1 - 4
152 if /^\s*#\s*define\s+NOFILE\s+(\d+)/;
156 $cacheout_maxopen = 16 unless $cacheout_maxopen;
158 if (!$isopen{$file}) {
159 if (++$cacheout_numopen > $cacheout_maxopen) {
160 local(@lru) = sort {$isopen{$a} <=> $isopen{$b};} keys(%isopen);
161 splice(@lru, $cacheout_maxopen / 3);
162 $cacheout_numopen -= @lru;
163 for (@lru) { &cacheout_close($_); delete $isopen{$_}; }
165 &cacheout_open($file, ($saw{$file}++ ? '>>' : '>') . $file)
166 || croak("Can't create $file: $!");
168 $isopen{$file} = ++$cacheout_seq;
172 $cacheout_numopen = 0;