]> git.donarmstrong.com Git - perltidy.git/commitdiff
update to v20240202 20240202
authorSteve Hancock <perltidy@users.sourceforge.net>
Wed, 31 Jan 2024 16:49:18 +0000 (08:49 -0800)
committerSteve Hancock <perltidy@users.sourceforge.net>
Wed, 31 Jan 2024 16:49:18 +0000 (08:49 -0800)
21 files changed:
CHANGES.md
bin/perltidy
docs/ChangeLog.html
docs/Tidy.html
docs/perltidy.html
docs/stylekey.html
lib/Perl/Tidy.pm
lib/Perl/Tidy.pod
lib/Perl/Tidy/Debugger.pm
lib/Perl/Tidy/Diagnostics.pm
lib/Perl/Tidy/FileWriter.pm
lib/Perl/Tidy/Formatter.pm
lib/Perl/Tidy/HtmlWriter.pm
lib/Perl/Tidy/IOScalar.pm
lib/Perl/Tidy/IOScalarArray.pm
lib/Perl/Tidy/IndentationItem.pm
lib/Perl/Tidy/Logger.pm
lib/Perl/Tidy/Tokenizer.pm
lib/Perl/Tidy/VerticalAligner.pm
lib/Perl/Tidy/VerticalAligner/Alignment.pm
lib/Perl/Tidy/VerticalAligner/Line.pm

index ab049c3addde822d8c50ef243e04ca269f65c373..daa238f28c19ac4f963f5099507a3dde4696862e 100644 (file)
@@ -1,6 +1,6 @@
 # Perltidy Change Log
 
-## 2023 09 12.13
+## 2024 02 02
 
     - Added --valign-signed-numbers, or -vsn. This improves the appearance
       of columns of numbers by aligning leading algebraic signs.  For example:
@@ -61,7 +61,6 @@
 
       produces a file with lines which look something like
 
-         ...
          1778:u: my $input_file
          6089:r: my $j: reused - see line 6076
 
         note          - an optional note referring to another line
 
       The issue is indicated by a letter which may be one of:
+
         r: reused variable name
         s: sigil change but reused bareword
         p: lexical variable with scope in multiple packages
         u: unused variable
 
-      This is very useful for locating problem areas and even bugs in code.
-      As an example, after it was developed it was applied to the perltidy
-      source code and it revealed two bugs; fortunately both were benign.
+      This is very useful for locating problem areas and bugs in code.
 
     - Added a related flag --warn-variable-types=string (-wvt=string) option
       to warn if certain types of variables are found in a script. The types
       The manual has further details.
 
     - All parameters taking integer values are now checked for
-      out-of-range values before processing starts. When a
-      minimum or maximum range is exceeded, the new default
-      behavior is to write a warning message, reset the
-      value to its default setting, and continue.  If this default
-      behavior causes a problem, it can be changed with the new
-      parameter B<--integer-range-check=n>, or B<-irc=n>, as follows:
+      out-of-range values before processing starts. When a maximum or
+      maximum range is exceeded, the new default behavior is to write a
+      warning message, reset the value to its default setting, and continue.
+      This default behavior can be changed with the new parameter
+      --integer-range-check=n, or -irc=n, as follows:
 
         n=0  skip check completely (for stress-testing perltidy only)
         n=1  reset bad values to defaults but do not issue a warning
     - The -DEBUG option no longer automatically also writes a .LOG file.
       Use --show-options if the .LOG file is needed.
 
-    - The run time of this version with all new options in use is no
-      greater than the previous version thanks to optimization work.
+    - The run time of this version with all new options in use is no greater
+      than that of the previous version thanks to optimization work.
 
 ## 2023 09 12
 
index 26b12f6815e8803a68e3426cca8830915b6258d1..9cc4b9ddb30cab2e9f3d4fa6c0f3a946a7d948b7 100755 (executable)
@@ -6265,7 +6265,7 @@ The perltidy binary uses the Perl::Tidy module and is installed when that module
 
 =head1 VERSION
 
-This man page documents perltidy version 20230912.13
+This man page documents perltidy version 20240202
 
 =head1 BUG REPORTS
 
index 9a10efb855e1252b311728b6cb60079789382714..4cbb3c0be215ce3835f68528ca566119dd1cf159 100644 (file)
@@ -1,6 +1,6 @@
 <h1>Perltidy Change Log</h1>
 
-<h2>2023 09 12.13</h2>
+<h2>2024 02 02</h2>
 
 <pre><code>- Added --valign-signed-numbers, or -vsn. This improves the appearance
   of columns of numbers by aligning leading algebraic signs.  For example:
@@ -34,6 +34,7 @@
 
 - Added --dump-mixed-call-parens (-dmcp ) which will dump a list of
   operators which are sometimes followed by parens and sometimes not.
+  This can be useful for developing a uniform style for selected operators.
   Issue git #128. For example
 
      perltidy -dmcp somefile.pl &gt;out.txt
   will format as normal but warn if any user subs are called without parens.
 
 - Added --dump-unusual-variables (-duv) option to dump a list of
-  variables with certain properties of interest. For example
+  variables with certain properties of interest.  For example
 
      perltidy -duv somefile.pl &gt;vars.txt
 
   produces a file with lines which look something like
 
-     ...
      1778:u: my $input_file
      6089:r: my $j: reused - see line 6076
 
     note          - an optional note referring to another line
 
   The issue is indicated by a letter which may be one of:
+
     r: reused variable name
     s: sigil change but reused bareword
     p: lexical variable with scope in multiple packages
     u: unused variable
 
+  This is very useful for locating problem areas and bugs in code.
+
 - Added a related flag --warn-variable-types=string (-wvt=string) option
   to warn if certain types of variables are found in a script. The types
   are a space-separated string which may include 'r', 's', and 'p' but
   The manual has further details.
 
 - All parameters taking integer values are now checked for
-  out-of-range values before processing starts. When a
-  minimum or maximum range is exceeded, the new default
-  behavior is to write a warning message, reset the
-  value to its default setting, and continue.  If this default
-  behavior causes a problem, it can be changed with the new
-  parameter B&lt;--integer-range-check=n&gt;, or B&lt;-irc=n&gt;, as follows:
+  out-of-range values before processing starts. When a maximum or
+  maximum range is exceeded, the new default behavior is to write a
+  warning message, reset the value to its default setting, and continue.
+  This default behavior can be changed with the new parameter
+  --integer-range-check=n, or -irc=n, as follows:
 
     n=0  skip check completely (for stress-testing perltidy only)
     n=1  reset bad values to defaults but do not issue a warning
   emit an else block when two elsif blocks were separated by a hanging
   side comment (a very rare situation).
 
+- When braces are detected to be unbalanced, an attempt is made to
+  localize the error by comparing the indentation at closing braces
+  with their actual nesting levels. This can be useful for files which
+  have previously been formatted by perltidy. To illustrate, a test was
+  made in which the closing brace at line 30644 was commented out in
+  a file with a total of over 62000 lines.  The new error message is
+
+    Final nesting depth of '{'s is 1
+    The most recent un-matched '{' is on line 6858
+    ...
+    Table of nesting level differences at closing braces.
+    This might help localize brace errors if the file was previously formatted.
+    line:  (brace level) - (level expected from old indentation)
+    30643: 0
+    30645: 1
+
+  Previously, the error file only indicated that the error in this case
+  was somewhere after line 6858, so the new table is very helpful. Closing
+  brace indentation is checked because it is unambiguous and can be done
+  very efficiently.
+
 - The -DEBUG option no longer automatically also writes a .LOG file.
   Use --show-options if the .LOG file is needed.
+
+- The run time of this version with all new options in use is no greater
+  than that of the previous version thanks to optimization work.
 </code></pre>
 
 <h2>2023 09 12</h2>
@@ -1168,7 +1194,7 @@ signatures.  Reformatting with the current version will fix the problem.
 
 <pre><code>- Added support for Switch::Plain syntax, issue git #31.
 
-- Fixed minor problem where trailing 'unless' clauses were not 
+- Fixed minor problem where trailing 'unless' clauses were not
   getting vertically aligned.
 
 - Added a parameter --logical-padding or -lop to allow logical padding
@@ -1186,35 +1212,35 @@ signatures.  Reformatting with the current version will fix the problem.
   'teefile' call parameters.  These output streams are rarely used but
   they are now treated the same as any 'logfile' stream.
 
-- add option --break-at-old-semicolon-breakpoints', -bos, requested 
+- add option --break-at-old-semicolon-breakpoints', -bos, requested
   in RT#131644.  This flag will keep lines beginning with a semicolon.
 
 - Added --use-unicode-gcstring to control use of Unicode::GCString for
-  evaluating character widths of encoded data.  The default is 
+  evaluating character widths of encoded data.  The default is
   not to use this (--nouse-unicode-gcstring). If this flag is set,
-  perltidy will look for Unicode::GCString and, if found, will use it 
+  perltidy will look for Unicode::GCString and, if found, will use it
   to evaluate character display widths.  This can improve displayed
   vertical alignment for files with wide characters.  It is a nice
   feature but it is off by default to avoid conflicting formatting
-  when there are multiple developers.  Perltidy installation does not 
-  require Unicode::GCString, so users wanting to use this feature need 
+  when there are multiple developers.  Perltidy installation does not
+  require Unicode::GCString, so users wanting to use this feature need
   set this flag and also to install Unicode::GCString separately.
 
 - Added --character-encoding=guess or -guess to have perltidy guess
-  if a file (or other input stream) is encoded as -utf8 or some 
-  other single-byte encoding. This is useful when processing a mixture 
+  if a file (or other input stream) is encoded as -utf8 or some
+  other single-byte encoding. This is useful when processing a mixture
   of file types, such as utf8 and latin-1.
 
   Please Note: The default encoding has been set to be 'guess'
-  instead of 'none'. This seems like the best default, since 
+  instead of 'none'. This seems like the best default, since
   it allows perltidy work properly with both
   utf8 files and older latin-1 files.  The guess mode uses Encode::Guess,
-  which is included in standard perl distributions, and only tries to 
-  guess if a file is utf8 or not, never any other encoding.  If the guess is 
-  utf8, and if the file successfully decodes as utf8, then it the encoding 
-  is assumed to be utf8.  Otherwise, no encoding is assumed. 
-  If you do not want to use this new default guess mode, or have a 
-  problem with it, you can set --character-encoding=none (the previous 
+  which is included in standard perl distributions, and only tries to
+  guess if a file is utf8 or not, never any other encoding.  If the guess is
+  utf8, and if the file successfully decodes as utf8, then it the encoding
+  is assumed to be utf8.  Otherwise, no encoding is assumed.
+  If you do not want to use this new default guess mode, or have a
+  problem with it, you can set --character-encoding=none (the previous
   default) or --character-encoding=utf8 (if you deal with utf8 files).
 
 - Specific encodings of input files other than utf8 may now be given, for
@@ -1236,11 +1262,11 @@ signatures.  Reformatting with the current version will fix the problem.
 <h2>2020 01 10</h2>
 
 <pre><code>- This release adds a flag to control the feature RT#130394 (allow short nested blocks)
-  introduced in the previous release.  Unfortunately that feature breaks 
+  introduced in the previous release.  Unfortunately that feature breaks
   RPerl installations, so a control flag has been introduced and that feature is now
   off by default.  The flag is:
 
-  --one-line-block-nesting=n, or -olbn=n, where n is an integer as follows: 
+  --one-line-block-nesting=n, or -olbn=n, where n is an integer as follows:
 
   -olbn=0 break nested one-line blocks into multiple lines [new DEFAULT]
   -olbn=1 stable; keep existing nested-one line blocks intact [previous DEFAULT]
@@ -1261,8 +1287,8 @@ signatures.  Reformatting with the current version will fix the problem.
 - Fixed issue RT#131288: parse error for un-prototyped constant function without parenthesized
   call parameters followed by ternary.
 
-- Fixed issue RT#131360, installation documentation.  Added a note that the binary 
-  'perltidy' comes with the Perl::Tidy module. They can both normally be installed with 
+- Fixed issue RT#131360, installation documentation.  Added a note that the binary
+  'perltidy' comes with the Perl::Tidy module. They can both normally be installed with
   'cpanm Perl::Tidy'
 </code></pre>
 
@@ -1285,19 +1311,19 @@ signatures.  Reformatting with the current version will fix the problem.
   one or more aliases for 'sub', separated by spaces or commas.
   For example,
 
-    perltidy -sal='method fun' 
+    perltidy -sal='method fun'
 
   will cause the perltidy to treat the words 'method' and 'fun' to be
   treated the same as if they were 'sub'.
 
-- Added flag --space-prototype-paren=i, or -spp=i, to control spacing 
+- Added flag --space-prototype-paren=i, or -spp=i, to control spacing
   before the opening paren of a prototype, where i=0, 1, or 2:
   i=0 no space
   i=1 follow input [current and default]
   i=2 always space
 
   Previously, perltidy always followed the input.
-  For example, given the following input 
+  For example, given the following input
 
      sub usage();
 
@@ -1315,16 +1341,16 @@ signatures.  Reformatting with the current version will fix the problem.
 
 <h2>2019 09 15</h2>
 
-<pre><code>- fixed issue RT#130344: false warning "operator in print statement" 
-  for "use lib". 
+<pre><code>- fixed issue RT#130344: false warning "operator in print statement"
+  for "use lib".
 
 - fixed issue RT#130304: standard error output should include filename.
-  When perltidy error messages are directed to the standard error output 
-  with -se or --standard-error-output, the message lines now have a prefix 
-  'filename:' for clarification in case multiple files 
-  are processed, where 'filename' is the name of the input file.  If 
-  input is from the standard input the displayed filename is '&lt;stdin&gt;', 
-  and if it is from a data structure then displayed filename 
+  When perltidy error messages are directed to the standard error output
+  with -se or --standard-error-output, the message lines now have a prefix
+  'filename:' for clarification in case multiple files
+  are processed, where 'filename' is the name of the input file.  If
+  input is from the standard input the displayed filename is '&lt;stdin&gt;',
+  and if it is from a data structure then displayed filename
   is '&lt;source_stream&gt;'.
 
 - implement issue RT#130425: check mode.  A new flag '--assert-tidy'
index 3ed220f87d15a5e1185ead024ebed2843c80986e..86b73c948fd0487e4d3d911a4517601d52d8d0e7 100644 (file)
 
 <h1 id="VERSION">VERSION</h1>
 
-<p>This man page documents Perl::Tidy version 20230912.13</p>
+<p>This man page documents Perl::Tidy version 20240202</p>
 
 <h1 id="LICENSE">LICENSE</h1>
 
index 7cdcc71a466eb63cae702322a137e9c7bb02c8a3..310d993cc52cc862a15ba8e9d9ec9a9280e236b9 100644 (file)
 
 <p>In a future release <b>-vsn</b> will become the default.</p>
 
-<p>This option has a control parameter <b>--valign-signed-number-limit=N</b>, or <b>-vsnl=N</b>. This value controls formatting of very long columns of numbers and should not normally need to be changed. To see the function of this parameter, consider a very long column of just unsigned numbers, say 1000 lines. If we add a single negative number, it is undesirable to move all of the other lines over by one space. This would create many lines of file differences but not really improve the appearance when a local section of the table was viewed. The number <b>N</b> avoids this problem by not adding extra indentation to a run of more than <b>N</b> lines of unsigned numbers. The default value, <b>N=20</b>, is set to be approximately the number of lines for which a viewer does not normally see both ends of a long column of unsigned numbers on a single page.</p>
+<p>Some points regarding <b>-vsn</b> are:</p>
+
+<ul>
+
+<li><p>This option works by inserting a single space ahead of unsigned numbers when possible. This is not done if it would require increasing the maximum width of a column.</p>
+
+</li>
+<li><p>This option is mainly limited to lists of comma-separated numbers. For multiline lists of numbers, having trailing commas can sometimes improve the results. If missing, perltidy can add them for example with parameters <b>-wtc=b -atc</b>. See <a href="#Adding-and-Deleting-Commas">&quot;Adding and Deleting Commas&quot;</a>.</p>
+
+</li>
+<li><p>This option has a control parameter <b>--valign-signed-number-limit=N</b>, or <b>-vsnl=N</b>. This value controls formatting of very long columns of numbers and should not normally need to be changed. To see its purpose, consider a very long column of just unsigned numbers, say 1000 lines. If we add a single negative number, it is undesirable to move all of the other numbers over by one space. This would create many lines of file differences but not really improve the appearance when a local section of the table was viewed. The number <b>N</b> avoids this problem by not adding extra indentation to a run of more than <b>N</b> lines of unsigned numbers. The default value, <b>N=20</b>, is set to be a number of lines for which the ends of a long column of unsigned numbers are not normally both in view.</p>
+
+</li>
+</ul>
 
 </dd>
 </dl>
 
 <h1 id="VERSION">VERSION</h1>
 
-<p>This man page documents perltidy version 20230912.13</p>
+<p>This man page documents perltidy version 20240202</p>
 
 <h1 id="BUG-REPORTS">BUG REPORTS</h1>
 
index e70b5a65200b1fcbcfc3e9f00648bbac43d85472..d5d147253c91548596cb29c41d4ef70deb452fea 100644 (file)
 
 <p>The <b>-vt=2</b> style does not limit itself to a single indentation step per line.</p>
 
-<p>Note that in the above example the function &#39;do_sumething_about_it&#39; started on a new line. This is because it follows an opening code block brace and is governed by the flag previously set in <a href="#Block-Brace-Vertical-Tightness">&quot;Block Brace Vertical Tightness&quot;</a>.</p>
+<p>Note that in the above example the function &#39;do_something_about_it&#39; started on a new line. This is because it follows an opening code block brace and is governed by the flag previously set in <a href="#Block-Brace-Vertical-Tightness">&quot;Block Brace Vertical Tightness&quot;</a>.</p>
 
 <h2 id="Closing-Token-Placement">Closing Token Placement</h2>
 
index 0079841271fb832c7e4d5666f4da22cf25e44669..6ec7010b01b573a23269281f35958ea87b03af66 100644 (file)
@@ -131,7 +131,7 @@ BEGIN {
     # then the Release version must be bumped, and it is probably past time for
     # a release anyway.
 
-    $VERSION = '20230912.13';
+    $VERSION = '20240202';
 } ## end BEGIN
 
 sub DESTROY {
index 47eb9efcb7cff058d337aaf7e255df3711d185d7..a8861dc0d826dad1a5a5a153dfc03f4d6a02b48c 100644 (file)
@@ -469,7 +469,7 @@ The module 'Perl::Tidy' comes with a binary 'perltidy' which is installed when t
 
 =head1 VERSION
 
-This man page documents Perl::Tidy version 20230912.13
+This man page documents Perl::Tidy version 20240202
 
 =head1 LICENSE
 
index d221948351dde964b2ff1ec837f1f63748139f7b..78614631b926f5bf4f1afb6d5bb0ceed6fd9a025 100644 (file)
@@ -8,7 +8,7 @@ package Perl::Tidy::Debugger;
 use strict;
 use warnings;
 use English qw( -no_match_vars );
-our $VERSION = '20230912.13';
+our $VERSION = '20240202';
 
 use constant EMPTY_STRING => q{};
 use constant SPACE        => q{ };
index 56cbb473c10f698421aae05a0844021631f98bfb..f1967824e3ab1867dd57947c8191d89e620ad554 100644 (file)
@@ -18,7 +18,7 @@ package Perl::Tidy::Diagnostics;
 use strict;
 use warnings;
 use English qw( -no_match_vars );
-our $VERSION = '20230912.13';
+our $VERSION = '20240202';
 
 use constant EMPTY_STRING => q{};
 
index 12d1a1d8221a85f48ab65054d4d8e4268f5f4f3f..40e2888416c40938481d70473f248720f8b09238 100644 (file)
@@ -16,7 +16,7 @@
 package Perl::Tidy::FileWriter;
 use strict;
 use warnings;
-our $VERSION = '20230912.13';
+our $VERSION = '20240202';
 
 use constant DEVEL_MODE   => 0;
 use constant EMPTY_STRING => q{};
index 05585ff948f6b4fd3ddf45ebefc8f977490ea432..d6f9ba39f9536384f11d3c34d1660f3115a1f615 100644 (file)
@@ -75,7 +75,7 @@ use constant SPACE        => q{ };
 use Carp;
 use English    qw( -no_match_vars );
 use List::Util qw( min max first );    # min, max first are in Perl 5.8
-our $VERSION = '20230912.13';
+our $VERSION = '20240202';
 
 # The Tokenizer will be loaded with the Formatter
 ##use Perl::Tidy::Tokenizer;    # for is_keyword()
index 1354c0b1310aa2e73d90151825c5bc98893e0198..ad870308d2794006ec05321675815673f975c18c 100644 (file)
@@ -7,7 +7,7 @@
 package Perl::Tidy::HtmlWriter;
 use strict;
 use warnings;
-our $VERSION = '20230912.13';
+our $VERSION = '20240202';
 
 use Carp;
 use English qw( -no_match_vars );
index 64458ab44a41ba15672888949aa8f7948323a3a6..92a6c386d9b338f30534e98e0ada2ff3c1bc8aba 100644 (file)
@@ -10,7 +10,7 @@ package Perl::Tidy::IOScalar;
 use strict;
 use warnings;
 use Carp;
-our $VERSION = '20230912.13';
+our $VERSION = '20240202';
 
 use constant DEVEL_MODE   => 0;
 use constant EMPTY_STRING => q{};
index 7a223facd1105388bd8e4c80dd628a505ff4717c..605161cf0aa9429fc8d101fa68023d7fcb5ebf6d 100644 (file)
@@ -14,7 +14,7 @@ package Perl::Tidy::IOScalarArray;
 use strict;
 use warnings;
 use Carp;
-our $VERSION = '20230912.13';
+our $VERSION = '20240202';
 
 use constant DEVEL_MODE => 0;
 
index 7da983064797f0b5e25609b347c8e628815460aa..6a17661ad8729c1137d6e7ceacdbf326b6433690 100644 (file)
@@ -9,7 +9,7 @@ package Perl::Tidy::IndentationItem;
 use strict;
 use warnings;
 
-our $VERSION = '20230912.13';
+our $VERSION = '20240202';
 
 BEGIN {
 
index 956b1ab9afdb42ea27909f6692dbe7fbc411b20b..8131aae9159e0217b999e4b77c8affa2c6b7425a 100644 (file)
@@ -8,7 +8,7 @@
 package Perl::Tidy::Logger;
 use strict;
 use warnings;
-our $VERSION = '20230912.13';
+our $VERSION = '20240202';
 use Carp;
 use English qw( -no_match_vars );
 
index 2153e7fc211c86a7a5c61753426f8f468d5b3310..1826865921aa9e064b83148d61f495881026b8c2 100644 (file)
@@ -33,7 +33,7 @@ use strict;
 use warnings;
 use English qw( -no_match_vars );
 
-our $VERSION = '20230912.13';
+our $VERSION = '20240202';
 
 use Carp;
 
index 2d18300497eee3ded2066b71360fa004758fd8d2..91b8c4ee877f6da798c1b0c5eeb9133a6b833092 100644 (file)
@@ -5,7 +5,7 @@ use Carp;
 
 { #<<< A non-indenting brace to contain all lexical variables
 
-our $VERSION = '20230912.13';
+our $VERSION = '20240202';
 use English qw( -no_match_vars );
 use Perl::Tidy::VerticalAligner::Alignment;
 use Perl::Tidy::VerticalAligner::Line;
index 81ce1e63b31af5ec58103ffff08a11da68c00f3e..fe8c301fa8f8ce355e6a0cc3d0088b9281fabc8a 100644 (file)
@@ -9,7 +9,7 @@ package Perl::Tidy::VerticalAligner::Alignment;
 use strict;
 use warnings;
 
-our $VERSION = '20230912.13';
+our $VERSION = '20240202';
 
 sub new {
     my ( $class, $rarg ) = @_;
index f8621d09ab28fcb95a49dedf3691f37ffd668da2..75f4b37c44848ed8173c7242296cb0bbac3548ce 100644 (file)
@@ -10,7 +10,7 @@ package Perl::Tidy::VerticalAligner::Line;
 use strict;
 use warnings;
 
-our $VERSION = '20230912.13';
+our $VERSION = '20240202';
 use English qw( -no_match_vars );
 
 sub AUTOLOAD {
@@ -34,6 +34,11 @@ EOM
     exit 1;
 } ## end sub AUTOLOAD
 
+sub DESTROY {
+
+    # required to avoid call to AUTOLOAD in some versions of perl
+}
+
 # Constructor may be called as a class method
 sub new {
     my ( $class, $ri ) = @_;
@@ -66,6 +71,8 @@ sub current_field_width {
 sub increase_field_width {
 
     my ( $self, $j, $pad ) = @_;
+
+    # Increase the width of alignment field $j by $pad spaces
     my $jmax = $self->{jmax};
     foreach ( $j .. $jmax ) {
         my $alignment = $self->{ralignments}->[$_];