Want to flex your scripting skills? Also want a chance to win awesome prizes? If so, you should compete in Linux Showdown 8: “The Assembler” that TrueAbility is hosting!
TrueAbility was built with tech professionals in mind and has a vast community of Linux members. Everything from Linux challenges and self-assessments, to blog posts and Linux jobs can be found at TrueAbility.
We are launching an old school challenge to test tech pros' scripting skills and they are calling it their most difficult challenge EVER. It goes live on March 16th, so you have a few days to brush up your Hardware Programming Language: Assembly. The top 50 techs will advance to an even more challenging round 2.
Think you have what it takes to make it on their leaderboard and advance to round 2?
Lots of prizes are going to be given away! They range from Linux Foundation Certified Engineer Exam credits and TrueAbility Abilityscreens to DigitalOcean credits and even a D-Link AC3200 Ultra Wi-Fi Router. It doesn't cost anything to join in on the fun. Prove what you've got while winning awesome prizes. You won't want to miss this!
Hello,
I am on a Mac and trying to clean up some monthly files with a very simple SED:
sed '3,10d;/<ACROSS>/,$d' input.txt > output.txt
(from the input, delete lines 3 - 10; then delete from the line containing <ACROSS> to the end of the file)
then output to output.txt
Even when I try... (2 Replies)
Data::Dumper::Concise::Sugar(3) User Contributed Perl Documentation Data::Dumper::Concise::Sugar(3)NAME
Data::Dumper::Concise::Sugar - return Dwarn @return_value
SYNOPSIS
use Data::Dumper::Concise::Sugar;
return Dwarn some_call(...)
is equivalent to:
use Data::Dumper::Concise;
if (wantarray) {
my @return = some_call(...);
warn Dumper(@return);
return @return;
} else {
my $return = some_call(...);
warn Dumper($return);
return $return;
}
but shorter. If you need to force scalar context on the value,
use Data::Dumper::Concise::Sugar;
return DwarnS some_call(...)
is equivalent to:
use Data::Dumper::Concise;
my $return = some_call(...);
warn Dumper($return);
return $return;
If you need to force list context on the value,
use Data::Dumper::Concise::Sugar;
return DwarnL some_call(...)
is equivalent to:
use Data::Dumper::Concise;
my @return = some_call(...);
warn Dumper(@return);
return @return;
If you want to label your output, try DwarnN
use Data::Dumper::Concise::Sugar;
return DwarnN $foo
is equivalent to:
use Data::Dumper::Concise;
my @return = some_call(...);
warn '$foo => ' . Dumper(@return);
return @return;
If you want to output a reference returned by a method easily, try $Dwarn
$foo->bar->{baz}->$Dwarn
is equivalent to:
my $return = $foo->bar->{baz};
warn Dumper($return);
return $return;
If you want to format the output of your data structures, try DwarnF
my ($a, $c) = DwarnF { "awesome: $_[0] not awesome: $_[1]" } $awesome, $cheesy;
is equivalent to:
my @return = ($awesome, $cheesy);
warn DumperF { "awesome: $_[0] not awesome: $_[1]" } $awesome, $cheesy;
return @return;
If you want to immediately die after outputting the data structure, every Dwarn subroutine has a paired Ddie version, so just replace the
warn with die. For example:
DdieL 'foo', { bar => 'baz' };
DESCRIPTION
use Data::Dumper::Concise::Sugar;
will import Dwarn, $Dwarn, DwarnL, DwarnN, and DwarnS into your namespace. Using Exporter, so see its docs for ways to make it do something
else.
Dwarn
sub Dwarn { return DwarnL(@_) if wantarray; DwarnS($_[0]) }
$Dwarn
$Dwarn = &Dwarn
$DwarnN
$DwarnN = &DwarnN
DwarnL
sub Dwarn { warn Data::Dumper::Concise::Dumper @_; @_ }
DwarnS
sub DwarnS ($) { warn Data::Dumper::Concise::Dumper $_[0]; $_[0] }
DwarnN
sub DwarnN { warn '$argname => ' . Data::Dumper::Concise::Dumper $_[0]; $_[0] }
Note: this requires Devel::ArgNames to be installed.
DwarnF
sub DwarnF (&@) { my $c = shift; warn &Data::Dumper::Concise::DumperF($c, @_); @_ }
TIPS AND TRICKS
global usage
Instead of always just doing:
use Data::Dumper::Concise::Sugar;
Dwarn ...
We tend to do:
perl -MData::Dumper::Concise::Sugar foo.pl
(and then in the perl code:)
::Dwarn ...
That way, if you leave them in and run without the "use Data::Dumper::Concise::Sugar" the program will fail to compile and you are less
likely to check it in by accident. Furthmore it allows that much less friction to add debug messages.
method chaining
One trick which is useful when doing method chaining is the following:
my $foo = Bar->new;
$foo->bar->baz->Data::Dumper::Concise::Sugar::DwarnS->biff;
which is the same as:
my $foo = Bar->new;
(DwarnS $foo->bar->baz)->biff;
SEE ALSO
You probably want Devel::Dwarn, it's the shorter name for this module.
perl v5.18.2 2013-12-31 Data::Dumper::Concise::Sugar(3)